TI C2800 DSPs: Fehlerbehebung Linkers Probleme zwischen C ++ und Assembler-Code
Frage
Ich habe eine Funktion sincos_Q15_asm()
in der Montage, in der Datei sincos_p5sh.asm mit Richtlinien wie folgt:
.sect ".text"
.global _sincos_Q15_asm
.sym _sincos_Q15_asm,_sincos_Q15_asm, 36, 2, 0
.func 1
Die Funktion funktioniert gut, wenn ich testen Sie es selbst (Montage nur), aber wenn ich auf Link, um es versuchen, ich einen Linker Fehler:
undefined first referenced
symbol in file
--------- ----------------
sincos_Q15_asm(int, int *) build\pwm3phase.obj
error: unresolved symbols remain
Dies ist verwirrend, sehr zu mir, als ich die zusammengesetzten Datei build\blocks\sincos_p5sh.obj
in meinem Linker Befehl bin auch, und ich habe die absoluten lister abs2000
auf dieser OBJ-Datei verwendet, und es sagt, es ist ein Symbol _sincos_Q15_asm
. (Der Unterstrich-Präfix ist, wie es für die Montagearbeiten)
Irgendwelche Vorschläge, was ich als nächstes beheben?
Lösung
D'oh! Habe ich es - ich wurde mit C ++ und vergessen, die extern "C"
Erklärung für meine Funktion ein:
extern "C" {
extern void sincos_Q15_asm(int16_t theta, int16_t* cs);
}