Hallo Zusammen!
Ich bin verzweifelt! Ich versuche seit geraumer Zeit eine in Delphi konstruierte DLL in C++ zu benutzen. Die DLL ist einfach gehalten und soll lediglich einen String in einer MessageBox, welcher von C++ übergeben wird, anzeigen.
Die Delphi DLL wird dynamisch geladen.
Delphi Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| uses SysUtils, Classes, Dialogs;
{$R *.res}
procedure DialogWithParam(aParam: PChar);export; var test : string; begin MessageDlg('Called DialogWithParam! Param: ' + aParam, mtInformation, [mbOK], 0); end;
exports DialogWithParam,
begin end. |
C++ Code
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| HMODULE lTestDLL; tShowWithParam withp;
char *s = "Test";
lTestDLL = LoadLibrary("C:\\TestDLL.dll");
withp = (tShowWithParam)GetProcAddress(lTestDLL, "DialogWithParam"); (*withp)(s);
FreeLibrary(lTestDLL); |
Nun zu meiner Frage:
Wenn ich die Delphi procedure als export deklariere dann wird mir die MessageBox mit einem falscher String angezeigt.
Wenn ich die Delphi procedure als stdcall deklariere dann wird mir die
MessageBox mit dem richtigen String angezeigt aber mein C++ Programm schliesst sich einfach, oder es werden Zugriffsverletzungen generiert.
Ich hoffe ihr könnt mir helfen!
Danke im vorraus!
Benutzte Versionen:
Delphi 7
VC++ 6.0
Moderiert von
Motzi: Code- durch Delphi-Tags ersetzt.