Hi,
ich versuche eine unmanaged C++ DLL einzubinden und hänge gerade etwas..
Habe von der DLL die Header Datei in der ist die Funktion die ich brauche auch definiert:
BOOL ParserInit(char *);
leider nicht als extern C noch mit _declspec (dllimport) was die sache etwas verkompliziert.
habe mir mit bindump den EntryPoint rausgesucht und dann die Funktion in meinen Code eingebunden :
[DllImport("MdtParser.dll", EntryPoint = "?ParserInit@@YAHPAD@Z", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern bool ParserInit(StringBuilder outBuffer);
Wenn ich diese dann aufrufe bekomme ich folgende Meldung :
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Habe auch schon CallingConvention = CallingConvention.Cdecl probiert und die gleiche Meldung bekommen.
Hat noch jemand eine Idee was man noch machen kann?
Gruß SkySurfer
Es gibt 11 Arten von Menschen:
Hallo,
schau mal in DllImportAttribute-Klasse:
Gibt an, dass die attributierte Methode durch eine nicht verwaltete DLL (Dynamic Link Library) als statischer Einstiegspunkt verfügbar gemacht wird.
Diesen statischen Einstiegspunkt gibt's AFAIK entweder durch _declspec(dllexport)
, oder die Funktion muss beim Kompilieren der Dll in der EXPORTS-Sektion einer zugehörigen .DEF-Datei bekannt gemacht werden.
Wenn dies nicht gegeben ist (die Dll also nicht weiss, daß die Methode exportiert werden soll), vermute ich, Du hast schlechte Karten.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Habe zur DLL leider nur die Lib.
Also muss ich mir wohl die Arbeit machen und einen Wrapper in mannaged C++ schreiben...
Hatte gehofft ich könnte mir das sparen.
Danke
Es gibt 11 Arten von Menschen:
@MarsStein
Die DLL exportiert ja die Funktion. Nur leider als C++ und nicht als C Funktion, daher auch das Name Mangling.
@SkySurfer
Verwende als CallingConvention cdecl statt stdcall
Hallo,
des Weiteren string verwenden anstatt StringBuilder und CharSet von Auto auf Ansi.
spooky