无法在另一台计算机上运行我的exe文件."应用程序请求运行时以不寻常的方式终止它"错误

thr*_*013 9 c++ compiler-construction qt qt-creator mingw32

我的exe在我编程的计算机上运行完全正常.它调试很好,发布很好,我可以将exe文件从'release'文件夹移动到一个新文件中,从C:\ pathtoqt\ming47_32\bin找到所需的.dll文件,它仍然运行正常.但是,当我尝试在包含.dll文件的另一台计算机上运行此程序时,我无法执行此操作并且我得到"应用程序已请求运行时以不寻常的方式终止它".

我在2台Windows 7计算机和1台Windows XP上测试了这个.我使用了依赖walker并下载了一堆.dll,它仍然没有用.我设法让所有的dll成为"找到"状态或"红色"状态.

构建设置:http://puu.sh/3qTV3.png

我使用的是Qt5.0.2,mingGW 4.7 32bit.

我也偶然发现了这个... http://puu.sh/3qU6j.png

It'*_*ete 10

这些计算机很可能没有您的程序正在使用的一些必需的Qt库.请参阅此处的教程:http://doc.qt.io/qt-5/windows-deployment.html

另一个简单的检查是在另一台计算机上安装Qt,移动.exe并查看它是否运行.如果是这样,您肯定没有正确部署您的应用程序.

编辑添加这个有用的链接,因为这似乎是人们看到的完全相同的问题:https: //bugreports.qt.io/browse/QTBUG-28766

  • 老实说,我不确定,我对Qt的经验是有限的.但是,您的问题可能在于您手动将DLL从计算机复制到计算机. (2认同)
  • 我们遇到了同样的问题,通过提供我的答案中描述的其他共享库来解决. (2认同)

Mic*_*chK 5

如果安装了cygwin,则可以运行ldd <your_app.exe>并查看应用程序所需的库列表.执行此操作后,将您的exe复制到另一个文件夹和库所需的库.

对于LGPL许可证应该没问题,但我不是律师,所以请咨询一些熟悉法律问题的聪明人.


Seb*_*nge 5

您正在部署mingw编译的应用程序,除了应用程序中使用的Qt-DLL之外,还需要提供以下DLL文件:

icudt51.dll
icuin51.dll
icuuc51.dll
libstdc++-6.dll (eventually)
platforms/qminimal.dll
platforms/qwindows.dll
libgcc_s_dw2-1.dll (eventually)
Run Code Online (Sandbox Code Playgroud)

这些可以在SDK安装中找到的mingw目录中找到.

支持的DLL适合编译器版本也很重要.