我使用第三方 DLL (FTD2xx) 与外部设备通信。使用 Qt4,在调试模式下一切正常,但在成功完成被调用函数后,发布会无声地崩溃。它似乎在返回时崩溃,但是如果我在函数末尾向控制台(使用 qDebug)写入一些内容,有时它不会在那里崩溃,而是在几行或几十行之后崩溃。
我怀疑堆栈没有正确清理,调试版本可以幸存,但发布版本会被它阻塞。有人遇到过类似的问题吗? DLL 本身无法更改,因为源代码不可用。
看来降低优化级别是唯一的方法。 DLL 本身可能存在问题,因为如果打开优化,除了从该 DLL 调用单个函数之外不执行任何操作的程序也会以同样的方式崩溃。
幸运的是,优化级别的变化所造成的大小和速度损失可以忽略不计。
Edit:对于在 Qt 5.0 或更高版本上遇到类似问题的任何人:如果您更改优化级别(例如,更改为QMAKE_CXXFLAGS_RELEASE = -O0
),仅仅重建应用程序通常是不够的。需要一个完整的“全部清理”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)