TI C2800 DSPs: solucionar problemas enlazador entre C ++ y montaje código
Pregunta
Tengo un sincos_Q15_asm()
función en el montaje, en sincos_p5sh.asm archivo con las directivas de la siguiente manera:
.sect ".text"
.global _sincos_Q15_asm
.sym _sincos_Q15_asm,_sincos_Q15_asm, 36, 2, 0
.func 1
La función funciona bien cuando lo prueba por sí mismo (montaje solamente), pero cuando trato de enlazar con él, me sale un error de vinculador:
undefined first referenced
symbol in file
--------- ----------------
sincos_Q15_asm(int, int *) build\pwm3phase.obj
error: unresolved symbols remain
Esto es muy desconcertante para mí, como yo estoy incluyendo la build\blocks\sincos_p5sh.obj
archivo montado en mi comando enlazador, y he utilizado el abs2000
Lister absoluta en este archivo obj y se dice que hay una _sincos_Q15_asm
símbolo. (El prefijo subrayado es cómo funciona para el montaje)
Cualquier sugerencia lo que debería solucionar el siguiente?
Solución
D'oh! Lo he descubierto - que estaba usando C ++ y se olvidó de incluir la declaración extern "C"
para mi función:
extern "C" {
extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
}