从Delphi 10.3转换在Delphi 11 Alexandria中使用64位DLL的项目,D11上的代码引发访问冲突

lqfhib0f  于 2022-10-16  发布在  其他
关注(0)|答案(1)|浏览(246)

我有一个使用WinRar(unrar64.dll)的应用程序。在Delphi 10.3中,代码运行得很好,但在Delphi 11下运行它时,会在该行抛出访问冲突
RARSetCallback(RARArchiveInstance, HandleRarCallBack, Integer(Self));
此函数在DLL头文件中的形式为
TRARSetCallback = procedure(hArcData: THandle; Callback: TRARUnRarCallback; UserData: longint); stdcall;
第二个参数是这样定义函数
TRARUnRarCallBack = function(msg: Cardinal; UserData, P1, P2: longint): integer; stdcall;
我假设数据类型可能已经从10.3更改为11。但我找不到问题所在。谢谢

9avjhtql

9avjhtql1#

代码中声明的所有长度都是错误的。它们应该是指针大小的LPARAM
您应该参考官方的头文件,以确保在代码中正确定义了类型。我的猜测是您有一个旧的Pascal标题转换。你可以自己修,也可以找个新的。

相关问题