Funktionsnamen in DLL C++/CLI sind anders als in .h Datei definiert
-
Hallo
Ich habe in C++/CLI eine DLL erzeugt die eine Funktion enthält.
extern "C" __declspec(dllexport) int DllFunktion(char* Datenbank, char* BenutzerId, char* Passwort);
Es funktioniert auch alles ich kann die Dll mit LoadLibrary laden und die Funktion mit GetProcAddress ansprechen.
Der Funktionsname ist aber ein anderer als in der .h-Datei definiert.
Wenn ich mit Dependency Walker nach schaue hat die Funktionen den Namen:
_DllFunktion@12
Warum bekommt mann nicht den Namen den man definiert hat ?
mfg
biedego
-
Das hat m.M.n. nichts mit C++/CLI zu tun.
Da das Namemangeling mit extern "C" ausgeschaltet ist, tippe ich da einfach mal auf die Funktionsnummer (Ordinal).
Ev. findest du hier noch was:
http://msdn.microsoft.com/en-us/library/vstudio/a90k134d.aspx
-
Irgendwie scheint das Name-Mangling trotzdem noch aktiv zu sein? Wirf den Code zwischen zwei Pragmas:
#pragma managed (push, off) extern "C" __declspec(dllexport) int DllFunktion(char* Datenbank, char* BenutzerId, char* Passwort); #pragma managed (pop)
Evtl. hilfts ja? Mfg
-
Die Pragmas haben kein abhilfe geschaft.
Wie in http://msdn.microsoft.com/en-us/library/vstudio/a90k134d.aspx
angegeben hab ich in die Funktiondefinition __cdcel aufgenommen
damit funktioniert es.extern "C" __declspec(dllexport) int __cdecl DllFunktion(char* Datenbank, char* BenutzerId, char* Passwort);
Vielen Dank für die Unterstützung.