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?

È stato utile?

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
scroll top