Probleme beim Import von DLL-Funktionen
-
Hiho,
ich habe ein fremdes DLL-Projekt. Dieses habe ich kompiliert. Die enstandende Lib nutze ich zum Linken.
In meinem Programm was nun die DLL nutzt und zur Namensauflösung die lib nutzen soll, da findet der die Funktionen nicht. Die Biblitohek wird gezogen (habe ich mit /VERBOSE:lib nachgeschaut), aber der löst einfach die Symbole nicht auf.Einfache Funktionen habe ich nun hinbekommen, indem ich ein extern C drumrum mache. Es gibt aber eine Klasse, welche 2 Methoden exportiert und da funktioniert das extern "C" nicht.
Woran liegt das? Hat jemand eine Idee? DEF-Datei hat auch nicht geholfen.
Wenn ich extern C nutze, wirft das Hauptprogramm folgenden Fehler:
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall Ng_Meshing_Parameters::Ng_Meshing_Parameters(void)" (__imp_??0Ng_Meshing_Parameters@@QAE@XZ)" in Funktion ...
In der exp-Datei steht folgendes:
0Ng_Meshing_Parameters@nglib@@QAE@XZ
irgendwie kommt da noch ein @nblig in den Namen rein, was der bei der Namenserstellung im Hautporgramm nicht mit erstellt. Wie bekomme ich das weg? Hab da so langsam keine Ideen mehr
-
Ich würde sagen:
- Die Lib wurde mit Angabe eines Namespaces definiert.
Die Header haben da evtl. einen #ifdef um die namespace Definition.
- Beim benutzen der Header wird dieser Namespace nicht angewendet.Obwohl ich nicht ganz verstehe, dass undnamemit Deinen Namen nichts anfangen kann. Verwendest Du wirklich MS-VC? Wenn ja welche Version?
-
Hiho Martin,
VS2005 Prof.
Der Tipp mit dem namespace war goldrichtig. Da es eine fremde Lib ist, habe ich mir die cpp-Dateien nicht angeschaut, sondern nur die Doku und die h-Dateien. In der cpp steht nun folgendes:namespace nglib { #include "nglib.h" }
Stand nix in der h und auch nix in der Doku von dem Namespace.
Danke für die Hilfe!
MfG Pellaeon