TI C2800 DSP: risoluzione dei problemi di linker tra C ++ e codice assembly
Domanda
Ho una funzione sincos_Q15_asm()
in assemblea, nel file di sincos_p5sh.asm con le direttive come segue:
.sect ".text"
.global _sincos_Q15_asm
.sym _sincos_Q15_asm,_sincos_Q15_asm, 36, 2, 0
.func 1
La funzione funziona bene quando prova che da sola (unica assemblea), ma quando provo a collegare ad esso, ottengo un errore di linker:
undefined first referenced
symbol in file
--------- ----------------
sincos_Q15_asm(int, int *) build\pwm3phase.obj
error: unresolved symbols remain
Questo è molto imbarazzante per me, come io includo il build\blocks\sincos_p5sh.obj
di file assemblati in mio comando del linker, e ho usato il abs2000
Lister assoluto su questo file obj e dice che c'è una _sincos_Q15_asm
simbolo. (Il prefisso di sottolineatura è come funziona per il montaggio)
Qualche suggerimento che cosa devo risolvere i problemi dopo?
Soluzione
D'oh! Ho capito - ero in C ++ e dimenticato di includere la dichiarazione extern "C"
per la mia funzione:
extern "C" {
extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow