Von Assembler generierte .obj-Datei in C linken.

smile4free

Grünschnabel
Hallo zusammen, ich habe folgendes Problem:
Ich habe einen Assemblercode geschrieben, der die Funktion AssemblerCos beinhaltet, die mir den Cosinus eines Wertes berechnet. Diese Funktion (bzw. der ganze zugehörige Assemblercode) ist in der Datei cos.asm gespeichert.
Diese cos.asm assembliere ich dann mit dem Befehl:
Code:
nasm -f obj cos.asm
Jetzt habe ich doch eine Datei (cos.obj), die ich in ein C-Projekt einbinden kann, oder nicht?

Jetzt lege ich diese cos.obj in das gleiche Verzeichnis wie main.c (mein C-Programm).
In diesem C-Programm will ich die Assemblerfunktion AssemblerCos "aufrufbar" machen mit:
Code:
extern double AssemblerCos(double x);
Wenn ich jetzt aber main.c kompilieren will (ich verwende Dev-C++, letzte Version), bekomme ich folgende Fehlermeldung:
Code:
Undefined reference to AssemblerCos [...]
Kann mir jemand erklären, was ich falsch mache bzw. wie ich es schaffe, dass ich die Funktion AssemblerCos aus meine C-Programm heraus aufrufen kann?
 
Moin,

wahrscheinlich liegt es daran, dass du deiner Funktion einen falschen Namen gegeben hast - C/C++ erwartet, dass deren Name mit einem Unterstrich beginnt!
Also muss die Funktion in ASM
_AssemblerCos
heissen.
Vorsicht: in C den Unterstrich am Namensanfang NICHT mitaufrufen - das macht der Compiler automatisch. (also den Aufruf so lassen)

Ich hoffe, dass das funktioniert (lauf diverser Bücher sollte es das ;) ),
viel Glück
TheAlchimist
 
und man muss dem compiler sagen dass die OBJ-Datei dazugehört.
schau einfach mal in der DEV-Hilfe unter suche und gib Assembler ein..

mfg

Philipp9494
 

Neue Beiträge

Zurück