Qt GUI应用程序可以在我的电脑上运行,但不是另一个吗?

时间:2013-04-07 19:29:27

标签: c++ qt

我用Qt(mingw)的独立版本构建了我的第一个c ++ GUI应用程序,并且运行正常。我在另一台计算机上尝试过它,它立即崩溃了Visual c ++运行时库错误。

我实际上测试过将整个bin文件夹复制到另一台PC并从那里运行应用程序,仍然是相同的。 什么可能导致问题?

其他详情:

我安装了Visual C ++ 2010 Redistributable,我也复制了d3dcompiler_XX.dll。 我从Qt \ Qt5.0.1 \ 5.0.1 \ mingw47_32 \ bin获得了所有的dll。

我没有链接任何内容,而且我对链接一般没有任何经验。 我读了几篇关于这个的帖子,他们没有提供解决方案,或者我不理解的解决方案。调试模式也是这样做的。在我的电脑上它也在Qt Creator之外运行。

2 个答案:

答案 0 :(得分:1)

如果你的Qt-App是用MinGW动态构建的(即使用动态库),你需要MinGW的dll(比如libgcc_s_sjlj-1.dll,libstdc ++ - 6.dll等)。在MinGW安装目录中找到这些文件。 (可能是你的Qt安装)

Deploy an application on window

检查“应用程序依赖关系”

答案 1 :(得分:1)

毕竟我无法让MinGW版本工作,甚至很难我按照一步一步的部署文档,但我现在有一个有用的应用程序。

问题的根源是来自Qt文件夹的一些dll注册和程序到达它们甚至很难,它不在同一个文件夹中。我认为与文档中提到的相比,MinGW版本需要更多的dll,或者它可能只是我的PC。

这是我做的:

1,使用Visual Studio编译器下载Qt创建者,删除除源之外的所有内容并重建项目。

2,将此添加到项目文件的开头:

QMAKE_LFAGS += -Wl,--repath=\\\$\$ORIGIN
QMAKE_LFAGS += -Wl,--repath=\\\$\$ORIGIN/lib
QMAKE_LFAGS += -Wl,--repath=\\\$\$ORIGIN/libs
QMAKE_RPATH=

这应该让应用程序查找dll。 ,./ lib,./ libs,但我认为它什么都不做,因为应用程序不会在lib文件夹中找到它们。

3,将这些dll复制到同一个文件夹中:(与文档相同)

D3DCompiler_43
icudt49
icuin49
icuuc49
libEGL
libGLESv2
Qt5Core
Qt5Gui
Qt5Widgets
Platforms (folder) containing qminimal and qwindows
msvcr100 and msvcp100

minGW版本需要LIBSTDC ++ - 6,LIBGCC_S_DW2-1和MINGWM10,但即便如此,它也不适用于我。

一般提示:

  • 请注意,虽然如果找不到其中一个,mingw会丢失错误,但VS版本什么都不做(立即终止,没有任何消息。)
  • 测试依赖关系的最舒适的解决方案是重命名Qt文件夹,以便您的应用程序找不到它,这样您就不需要第二台计算机来测试它,也不会像文档建议的那样取消应用程序。< / LI>
  • 如果你还有问题,你可以像我一样解决这个蛮力方式,制作Qt文件夹的副本,并在原始文件夹中逐个删除元素,看看你的程序依赖于什么。不幸的是,即使依赖检查器也没有提及其中的一些。

祝大家编程愉快,并希望通过这篇文章更成功地进行故障排除。