Hallo,
ich habe ein "kleines" Problem beim aufruf einer
DLL - es kommt zu einer Zugriffsverletzung.
Der C-Header ist folgendermaßen deklariert:
Code:
DECLARE_HANDLE(HdMWMONRMXMLIMP); //
Handle fuer Import
extern BOOL DLLEXP MwmOnrmXmlImpInit(HdMWMONRMXMLIMP* phOnrm, wchar_t* pszLicenseId,
MwmOnrmXmlError* pErrorInfo);
extern BOOL DLLEXP MwmOnrmXmlImpOpen(HdMWMONRMXMLIMP hOnrm, wchar_t* pszFile);
ich habe das folgendermaßen ih Pascal übersetzt
Delphi-Quellcode:
type
fPHandle = ^THandle;
MwmOnrmXmlImpInit:
function(phOnrm: fPHandle; pszLicenseId : PWideChar;
var pErrorInfo: tagMwmOnrmXmlError): Bool
cdecl {$IFDEF WIN32} stdcall {$ENDIF};
MwmOnrmXmlImpOpen:
function(hOnrm: THandle;
var pszFile: PWideChar): Bool
cdecl;
{$IFDEF WIN32} stdcall {$ENDIF};
aufrufen im Code tue ich es folgendermaßen
Delphi-Quellcode:
var
pHandle : THandle;
sFile : String;
s : PWideChar;
begin
sFIle := 'Pfad der Datei';
if MwmOnrmXmlImpInit((@pHandle),'0',pError) then //<-- dieser Aufruf funktioniert
begin
s := PWideChar(WideString(sFile));
if MwmOnrmXmlImpOpen(pHandle,s) then //Hier kommt eine Zugriffsverletzung
end;
end;
laut dem Entwickler der
DLL kommt s nur als Hieroglyphen an - aber warum ist das so ?
Was mache ich falsch ???
Ich bedanke mich bereits jetzt für Anregungen und Vorschläge!
Mfg
Strally