我有一个使用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。但我找不到问题所在。谢谢
1条答案
按热度按时间9avjhtql1#
代码中声明的所有长度都是错误的。它们应该是指针大小的
LPARAM
。您应该参考官方的头文件,以确保在代码中正确定义了类型。我的猜测是您有一个旧的Pascal标题转换。你可以自己修,也可以找个新的。