【发布时间】:2011-06-08 08:39:43
【问题描述】:
我使用第三方 DLL (FTD2xx) 与外部设备进行通信。使用 Qt4,在调试模式下一切正常,但在成功完成调用函数后,该版本会静默崩溃。它似乎在返回时崩溃,但如果我在函数末尾向控制台(使用 qDebug)写一些东西,有时它不会在那里崩溃,而是在几行或几十行之后崩溃。
我怀疑一个没有正确清理的堆栈,调试版本可以继续存在,但发布却扼杀了它。有人遇到过类似的问题吗? DLL 本身无法更改,因为源不可用。
【问题讨论】:
-
也许是优化导致了不同的行为。尝试在禁用优化的情况下编译您的发布版本,看看会发生什么。如果它有效,那么您知道该错误仍然存在于某个地方,但您仍然可以发布它......
-
我降低了优化级别,它(至少暂时)现在运行而不会崩溃。我首先怀疑 Qt 调试和 Qt 发布 DLL 之间存在差异,但事实并非如此。
-
您是从 Qt 应用程序调用第三方 DLL 中包含的函数,还是从 DLL 中的代码调用 Qt 函数?
-
我从 Qt 应用调用第三方 DLL 中包含的函数。