最近我在Visual Studio 2010中使用Qt编写程序。我已经正确配置了我的Qt设置,因为之前我成功运行了该程序。但是现在我无法在编译模式下运行程序(在IDE之外),但它在调试模式下正常运行。
我的操作系统是Windows 7,我使用的是Qt 4.7
PS。它没有说丢失的DLL,只是默默地崩溃....
答案 0 :(得分:0)
如果它在发布模式下执行但崩溃,则可能与Qt没有任何关系。
可能性 - 您在调试/发布模式下设置了不同的环境。您是从Debug \ Release目录中的命令行还是从MSVC内的ctrl-f5运行它? 所以一个版本可能找到了错误的dll集,也许是早期的版本?
或者更多,您的代码中存在一个仅在发布模式下显示的错误。最常见的是未初始化的变量,调试模式通常将所有变量设置为零,而在释放模式下,它们可以包含任何随机值。
答案 1 :(得分:0)
也许您的代码依赖于存储在应用程序文件夹中的某些文件,并且这些文件在发布文件夹中丢失了?
或许您的系统中安装了许多Qt版本,而VS中使用的版本与应用程序可见的版本不同?
答案 2 :(得分:0)
我最近遇到了类似的问题,我花了很长时间来修复它。调试版本有效,因为它比发布版本更慢,没有进行优化。发布版本速度太快,在设置之前正在等待互斥锁。我通过显式启用优化编译调试版本来发现问题。如果您认为它可能是一个类似的计时问题,您可能想尝试这个。
编辑添加:另一种可能性是您正在破坏某些抗锯齿规则或其他任何规则,如果您的代码未经过优化,则不会造成任何损害。再次尝试在调试版本中启用优化。 (此外,单步执行完全优化的代码可能是超现实的。)
答案 3 :(得分:0)
如果这是您第一次尝试在计算机上以释放模式运行VS中构建的任何内容,这通常是未安装VS运行时库的问题。安装VS不会将自己的运行时库安装到系统中。虽然在IDE中运行可以使用调试版和发行版,但在IDE外部运行将无法正常工作。这是一个巨大的PITA,找到vcredist的正确版本。它位于Visual Studio树中的某个位置(不记得在哪里)安装它并从那里继续前进。
您可以在“添加/删除程序”设置对话框中查看是否安装了任何版本的vcredist,但要确定所安装的版本是否恰到好处是一个问题