2009-12-29 13 views
1

J'ai une fonction sincos_Q15_asm() dans l'assemblage, dans le fichier sincos_p5sh.asm avec les directives comme suit:TI C2800 DSPs: résolution des problèmes de liaison entre C++ et le code assembleur

.sect ".text" 
.global _sincos_Q15_asm 
.sym _sincos_Q15_asm,_sincos_Q15_asm, 36, 2, 0 
.func 1 

La fonction fonctionne très bien quand je le tester par lui-même (montage uniquement), mais lorsque je tente de créer un lien vers, je reçois une erreur de liaison:

undefined     first referenced 
symbol       in file 
---------     ---------------- 
sincos_Q15_asm(int, int *) build\pwm3phase.obj 

error: unresolved symbols remain 

Ceci est très déroutante pour moi, comme je suis, y compris le fichier assemblé build\blocks\sincos_p5sh.obj dans ma commande de liaison, et I » J'ai utilisé le lister absolu abs2000 sur ce fichier obj et il dit qu'il y a un symbole _sincos_Q15_asm. (le préfixe de soulignement est comment cela fonctionne pour l'assemblage)

Toutes les suggestions que je devrais dépanner suivant?

Répondre

1

D'oh! Je l'ai compris - j'utilisais C++ et j'ai oublié d'inclure la déclaration extern "C" pour ma fonction:

extern "C" { 
extern void sincos_Q15_asm(int16_t theta, int16_t* cs); 
}