Funktionen aus einer Library verwenden



  • Hallo,

    ich habe ein Problem und bekomme es alleine nicht hin. Vlt kann mir ja jemand von euch weiterhelfen.

    Ich benutze Code::Blocks als IDE und Mingw (g++) als Compiler.
    Ich versuche eine wrapper-dll für einen Smart-Card-Reader zu schreiben.

    In der dll muss ich die mitgelieferten Funktionen aus der CT_API von GEMPLUS aufrufen. Doch der Compiler meckert immer beim Funktionsaufruf:

    error: `CT_init' undeclared (first use this function)
    

    In der CT_API ist lediglich eine CTGmplus.lib, die ich mit reimp.exe zu einer libctgmplus.a konvertiert habe.
    Unter C::B habe ich dem Linker in der entsprechenden Einstellungen den Eintrag "ctgmplus" hinzugefügt und den Pfad, in dem die Datei liegt, bekanntgegeben.

    Ausserdem ist die zugehörige dll im system32 - Ordner zu finden.
    Jetzt sind allerdings keine header-Dateien bei der lib dabei. Wie mache ich die Funktion jetzt dem Compiler bekannt, so dass ich sie benutzen kann.

    Für Hilfe wäre ich äußerst dankbar.

    Gruß Marco



  • Habe jetzt zu meiner main.h noch die Zeile:

    __declspec(dllimport) char CT_init(unsigned short, unsigned short) ;
    

    hinzugefügt. Jetzt bekomme ich keine Compiler-Fehler mehr aber der linker meckert:

    Compiling: main.cpp
    Linking dynamic library: bin\Debug\iSCard.dll
    Creating library file: bin\Debug\libiSCard.a
    obj\Debug\main.o: In function `Z7getDatav':C:/Projekte/C++/iSCard/iSCard/main.cpp:12: undefined reference to `_imp___Z7CT_inittt'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 1 seconds)
    

Anmelden zum Antworten