我曾经遇到过一个旧的遗留 DLL 的问题,它导致发布时崩溃,但在调试中工作。降低优化级别解决了这个问题。如果我没记错的话,我当时使用的是 Qt 4.7。
现在,升级到 Qt 5.0.1 后,同样的崩溃再次发生,但现在在调试和发布中。在新的Qt中找到了设置优化级别的方法,但是好像没有任何效果:
QMAKE_CXXFLAGS_RELEASE -= -O
QMAKE_CXXFLAGS_RELEASE -= -O1
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE -= -O3
QMAKE_CXXFLAGS_RELEASE += -O
同样对于
QMAKE_CXXFLAGS_DEBUG
如何确保这些设置有效?我需要知道问题是否与 Qt 4.7 中的问题相同,或者完全不相关。崩溃恰好发生在从 DLL 调用某个函数时,该函数在经过高度优化的 Qt 4.7 版本中导致该问题。
我什至不能轻易降级到 Qt 4.7,因为 SDK 不再可供下载,所以我需要一个非常旧且精确的 mingw 版本,我知道微小的版本差异会导致重大问题。