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 Gruesse

    petersjo



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


Anmelden zum Antworten