繁体   English   中英

从 Delphi 10.3 转换一个使用 64 位 dll in Delphi 11 Alexandria 的项目。 D11 上的代码引发访问冲突

[英]Converting a project that uses a 64 bit dll in Delphi 11 Alexandria from Delphi 10.3. Code on D11 is throwing an access violation

我有一个使用 winrar (unrar64.dll) 的应用程序。 在 delphi 10.3 代码运行正常,但在 Delphi 11 下运行,它在这一行抛出访问冲突

RARSetCallback(RARArchiveInstance, HandleRarCallBack, Integer(Self));

这个 function 在 dll header 文件中作为

TRARSetCallback = procedure(hArcData: THandle; Callback: TRARUnRarCallback; UserData: longint); stdcall;

第二个参数是 function 这样定义的

TRARUnRarCallBack = function(msg: Cardinal; UserData, P1, P2: longint): integer; stdcall;

我假设数据类型可能已从 10.3 更改为 11。但无法找出问题所在。 谢谢

您的代码中声明的所有长整数都是错误的。 它们应该是指针大小的LPARAM

您应该参考官方 header 文件以确保在您的代码中正确定义了类型。 我猜你有一个旧的 Pascal header 翻译。 您可以自己修复它或搜索新的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM