Hallo
bin mir nicht sicher, ob diese Frage nun im Delphi-Forum oder in nem C-Forum angebracht ist. Da ich aber lieber Delphi programmiere und hier angemeldet bin, hoffe ich mal, dass mir jemand weiterhelfen kann.
Ich habe eine Delphi-DLL mit mehreren stdcalls :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure registerModule(name, info : PChar); stdcall; ...
procedure unregisterModule; stdcall; ...
procedure setFunction (fctName : PChar; fct : TFunction; fctParams, fctResults : IDOMNode; fctInfo : PChar; fctType : TFunctionType); stdcall; ... |
Die Deklaration unter VC++ sieht so aus
Quelltext
1:
| typedef void (__stdcall *TFunction1)(LPCSTR,IXMLDOMNodePtr (*TFunction3)(IXMLDOMNodePtr),IXMLDOMNodePtr,IXMLDOMNodePtr,LPCSTR,TFctType); |
Das Aufrufen der ersten beiden Prozeduren klappt reibungslos. Das Problem liegt an den Parametern fctParams und fctResults vom Typ IDOMNode. Sobald ich auf diese Parameter zugreifen möchte, gibts ne Exception.
Ich nutze sowohl in der DLL als auch unter VC++ MSXML. Unter VC++ gibt es dafür den IXMLDOMNodePtr. Die Zeigeradressen stimmen sowohl in VC++ als auch der DLL überein, das hab ich mir ausgeben lassen. Ich habe dann auch mal in Delphi einen Typ IDOMNodePtr = ^IDOMNode deklariert, und diesen in die Parameterliste gesetzt und dann mit ftpParams^ gearbeitet, leider das selbe Resultat.
Ich hoffe, jemand kann mir helfen.
Gruss, Pierre
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt