Fehler beim Linken
-
Hallo,
ich moechte von C++ aus eine bestimmte Fortran-Routine aufrufen. Bekomme aber immer folgende Fehlermeldung:
rcSD_3.obj : error LNK2001: unresolved external symbol _AENTER@0
Debug/ArcSDL_3.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.Die Aenter - Routine rufe ich folgendermassen auf:
extern "C" void __stdcall AENTER(); int main() { AENTER(); return(0); }
Bei der Fehlermeldung erscheint mein AENTER() Aufruf immer mit einem Unterstrich, muss ich vielleicht etwas an meinen Linker Optionen aendern??
Kennt Ihr vielleicht das Problem?
Viele Gruessepetersjo
-
extern "C"
bedeutet es ist ein von C dekorierter Name und es wird ein Unterstrich davor gemacht. Also lass es einfach weg!
-
Hallo,
Danke fuer Deine Antwort!
Ich habe das Beispiel aus dem Internet von der Compaq Homepage:
Hier steht zu der extern"C" -Deklaration
:The "C"attribute prevents C++ name mangling. Remove it if the file type is c.
Ich sollte es demnach doch lassen oder?
Wenn ich es entferne, bekomme ich folgende Meldung beim Kompilieren:ArcSD_3.obj : error LNK2001: unresolved external symbol "void __stdcall AENTER(void)" (?AENTER@@YGXXZ)
Debug/ArcSDL_3.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.vielleicht hilf Dir das weiter, bzw. mir auch?
petersjo
-
vielleicht solltest Du einfach mal in die LIB bzw. DLL mit einem Texteditor in die Export-Tabelle schauen, wie der Name ist!
-
Oder hast Du etwa vergessen, die lib bzw. dll hinzu zu linken ?