【发布时间】:2015-03-27 03:44:28
【问题描述】:
我有一个 DLL- 它有一个函数
Decrypt(aText, aKey: PAnsiChar): PAnsiChar; stdcall
并且这个函数已经被导出。 作为
exports
Decrypt;
如果我通过以下方式从客户端调用:
lH := LoadLibrary('EncDec.dll');
FEncDyc := GetProcAddress(lH , PChar('Decrypt'));
lResult := FEncDyc(PAnsiChar(AnsiString(EditPwd.Text)),
PAnsiChar(AnsiString(EditKey.Text)));
其中FEncDyc 是指向函数类型的指针
TDecrypt = function (aText: PAnsiChar; aKey: PAnsiChar): PAnsiChar;
我总是得到参数 aText 和 aKey 的垃圾值;我哪里错了? 如果我将 dll 的定义更改为
Decrypt(aText, aKey: PAnsiChar): PAnsiChar; export;
我在 DLL 中获得没有垃圾字符的值 - 工作正常!
stdcall 的代码有什么问题,如果我改用导出密钥有什么不同。
还请建议:传递 PAnsiChar 的正确方法是什么以及如何在我的 dll 中将其类型转换为 AnsiString。
【问题讨论】:
标签: delphi delphi-xe7 dllexport