【发布时间】:2010-09-27 22:15:19
【问题描述】:
帮助! 在我的 Delphi 4 应用程序中查看入站函数参数的内容时收到此错误。
代码调用 dll 中的函数,带有 3 个参数 (app.handle, pchar, boolean)
声明函数在externs.pas中,声明为:
function AdjustVoucherDifference(hOwner :HWnd; Receipt_ID :PChar;
bCommit: Boolean): boolean; stdcall;
external 'FBCoupon.dll' name 'AdjustVoucherDifference';
在另一个源文件中,代码将其称为:
AdjustVoucherDifference(Application.Handle, PChar(Receipt_ID), true);
在调试模式下单步执行代码时,我可以在源文件中看到有效值,但是当它在 externs.pas 中的行中断时,值的工具提示(或 CTRL+ F7) 显示符号已从链接器中删除,并且在 dll 中执行时收到异常。
DLL是在CBuilder4中开发的,具体功能声明如下:
BOOL __stdcall __DLLTYPE__ AdjustVoucherDifference(HWND hOwner,
char *receipt_id, bool commit);
编译器优化已关闭。
谢谢!!!
【问题讨论】:
-
您判断链接器有罪,因为“删除”了导致 dll 函数内部异常的符号。在您证明该函数没有收到正确的参数之前,我不确定。如果您可以控制 dll,只需使用构建器将主机应用程序设置为 Delphi 即可对其进行调试。如果没有,也许您可以使用具有此名称和公司名称的函数使用 delphi 制作一个假 dll,然后使用 Delphi 调试器对其进行测试。
-
` 表明符号已从链接器中删除`:这不是来自 Delphi IDE 的实际消息,是吗?请提供实际的错误消息,而不是您对错误消息的解释。