# Von Assembler generierte .obj-Datei in C linken.



## smile4free (15. Dezember 2007)

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:

```
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:

```
extern double AssemblerCos(double x);
```
Wenn ich jetzt aber main.c kompilieren will (ich verwende Dev-C++, letzte Version), bekomme ich folgende Fehlermeldung:

```
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?


----------



## TheAlchimist (31. Dezember 2007)

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


----------



## Philipp9494 (31. Dezember 2007)

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


----------

