TI C2800 DSP: la résolution des problèmes de liaison entre C ++ et le code assembleur

StackOverflow https://stackoverflow.com/questions/1975812

  •  21-09-2019
  •  | 
  •  

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?

Était-ce utile?

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top