Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Funktionen aus einer Library verwenden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.08.2007, 11:18 Uhr
ao

(Operator)


Sieht aus wie unpassendes Name-Mangling ( http://en.wikipedia.org/wiki/Name_mangling ).

Versuchs mal so:


C++:
#ifdef __cplusplus
extern "C" {
#endif

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

#ifdef __cplusplus
}
#endif



ao

Dieser Post wurde am 15.08.2007 um 11:19 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: