[英]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.