TI C2800 DSP: la résolution des problèmes de liaison entre C ++ et le code assembleur
Question
J'ai un sincos_Q15_asm()
de fonction dans l'assemblage, dans le fichier sincos_p5sh.asm avec les directives comme suit:
.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 seulement), mais lorsque je tente de créer un lien vers, je reçois une erreur de liens:
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 build\blocks\sincos_p5sh.obj
de fichier assemblé dans ma commande de liaison, et je l'ai utilisé la abs2000
absolue de listeuse ce fichier obj et il dit qu'il ya un _sincos_Q15_asm
symbole. (Le préfixe est underscore comment cela fonctionne pour le montage)
Toutes les suggestions que je dois résoudre ensuite?
La solution
D'oh! J'ai tout compris - j'utilisais C ++ et oublié d'inclure la déclaration de extern "C"
pour ma fonction:
extern "C" {
extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
}