TI C2800 DSPS: Solução de problemas de problemas de ligação entre C ++ e código de montagem
Pergunta
Eu tenho uma função sincos_Q15_asm()
Na Assembléia, no arquivo sincos_p5sh.asm com diretivas da seguinte forma:
.sect ".text"
.global _sincos_Q15_asm
.sym _sincos_Q15_asm,_sincos_Q15_asm, 36, 2, 0
.func 1
A função funciona bem quando eu o testo por si só (apenas montagem), mas quando tento vincular a ela, recebo um erro de vinculador:
undefined first referenced
symbol in file
--------- ----------------
sincos_Q15_asm(int, int *) build\pwm3phase.obj
error: unresolved symbols remain
Isso é muito intrigante para mim, pois estou incluindo o arquivo montado build\blocks\sincos_p5sh.obj
No meu comando vinculativo, e eu usei o Lister absoluto abs2000
Neste arquivo OBJ e diz que há um símbolo _sincos_Q15_asm
. (O prefixo sublinhado é como funciona para a montagem)
Alguma sugestão do que devo solucionar a problemas a seguir?
Solução
D'HO! Eu descobri - eu estava usando C ++ e esqueci de incluir o extern "C"
Declaração para minha função:
extern "C" {
extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow