ASM-Dateien in C++ Projekten
-
Hallo,
ich besitze das Visual c++ 2005 Studio in der Express Edition. Passend dazu habe ich den Microsoft Macro Assembler für das Visual Studio installiert und wollte nun ein gemischtes Projekt mit asm- und cpp-Dateien anlegen, ähnlich dem folgenden Link http://msdn2.microsoft.com/de-de/library/td2x50t8(VS.80).aspx.Sowohl die asm-Datei wie auch die cpp-Datei kompiliert er problemlos, allerdings schlägt das Linken fehl, hier kann er den Bezug zwischen der Funktionsdeklaration in der cpp-Datei und der Funktionsdefinition in der asm-Datei nicht herstellen.
Kann mir da jemand weiterhelfen?
-
@PaulK: "Sowohl die asm-Datei wie auch die cpp-Datei kompiliert er problemlos,..."
.asm-Dateien werden assembliert und .cpp-Dateien kompiliert. Bei fehlerfreiem Vorgang entstehen .obj-Dateien für den Linker.
@PaulK: "allerdings schlägt das Linken fehl, hier kann er den Bezug zwischen der Funktionsdeklaration in der cpp-Datei und der Funktionsdefinition in der asm-Datei nicht herstellen."
In der .cpp-Datei wird deine Assemblerroutine z. B. mit extern "C" int asmfunc(int, int); deklariert.
In der .asm-Datei verwendest du hoffentlich die vereinfachten Segmentanweisungen und dann zur Sprache passend .model flat, C
Damit der Linker deine .asm-Funktion findet nicht vergessen, vor der Funktion - public asmfunc - in der Assemblerdatei!
Gibts Du in der Assemblerdatei die Sprache "C" nicht an, wird führender Unterstrich erforderlich, z.B. public _asmfunc ... _asmfuncmfg
-
@freak11: Vielen dank für deine Antwort, mein Programm läuft mittlerweile fehlerfrei, damit habe ich weitern Spielraum zum experimentieren. Es lag an dem fehlenden "C" hinter extern, mir war bisher gar nicht bekannt, dass es so etwas überhaupt gibt und was es genau macht ist mir immer noch nicht so ganz klar. Public musste übrigens nicht in der asm-Datei angegeben sein, was wahrscheinlich an einer Projekt-Einstellung von Visual Studio liegen mag.
Auf jeden Fall läuft es und dafür noch mal Danke
-
Ihr müsst euch nicht mit @ ansprechen, wenn ihr nur alleine seid