C++ DLL in ANSI C einbinden
-
Ist es möglich eine C++ DLL in ANSI-C einzubinden.
Es werden ausschließlich Funktionen exportiert und zwar mittels
__declspec(dllexport)
In den Headern der DLL sind keien Konstrukte die ANSI-C nicht versteht.
Als Compiler verwende ich entweder VC6 oder VC2005.
Wenn ich die Header Datei der DLL include und die .LIB in das Projekt einbeziehe erhalte ich diese Fehlermeldung:
OmiExeC.obj : error LNK2019: unresolved external symbol __imp__OmiGetDev referenced in function _main
Benötige ich eine .DEF Datei? Wenn ja, wie erzeuge ich die am besten?
-
Beim Funktionsnamen vertippt ?
-
Wenn du die Funktionen für C nutzen willst, mußt du das Name Mangling berücksichtigen (dient auf C++-Seite dazu, überladene Funktionen zu unterscheiden):
#ifdef __cplusplus extern "C" { #endif //hier kommen die Funktionsprototypen rein ... #ifdef __cplusplus } #endif
-
C++ Syntax in dlls ?
-
CStoll schrieb:
Wenn du die Funktionen für C nutzen willst, mußt du das Name Mangling berücksichtigen (dient auf C++-Seite dazu, überladene Funktionen zu unterscheiden):
#ifdef __cplusplus extern "C" { #endif //hier kommen die Funktionsprototypen rein ... #ifdef __cplusplus } #endif
Ich habe diesen codeteil immer so versatanden dass er dazu dient den umgekehrten Weg zu unterstützen, also C Funktionen in C++ verfügbar zu machen.
So funktioniert es dann auch.
Vielen Dank
-
Der Code funktioniert in beide Richtungen - der sagt dem C++ Compiler, daß er alle Funktionen zwischen den beiden #ifdef/#endif Blöcken mit C-Bindung deklarieren soll (das ist sowohl für C-Biliotheken gut, die mit C++ verarbeitet werden sollen, als auch für C++ Bibliotheken, die du in C einbinden willst).
@Tippteufel: Wie bitte?