000
14.08.2007, 23:28 Uhr
~MarWestermann
Gast
|
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:
Code: |
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.
edit: Habe jetzt zu meiner main.h noch die Zeile:
Code: |
__declspec(dllimport) char CT_init(unsigned short, unsigned short) ;
|
hinzugefügt. Jetzt bekomme ich keine Compiler-Fehler mehr aber der linker meckert:
Code: |
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)
|
Für Hilfe wäre ich äußerst dankbar.
Gruß Marco |