2009-12-22 120 views
17

我想部署我的简单的Qt项目像一个你好的世界。如何使用Qt-Creator部署我的应用程序?

我构建成功,也可以在Qt-Creator上执行它。但是,由于某些共享库错误,我无法直接在发布文件夹中执行二进制文件。

所以我只是复制一些必要的图书馆到版本文件夹,如qtcore.dll和qtgui.dll,但我不能仍然执行它。

如何部署我的简单Qt项目?是否有另一个步骤来部署它?

+0

什么是错误信息? – 2009-12-22 15:57:53

+0

错误消息是在QtCore4.dll中找不到过程的起点。这个错误信息可能不完全是因为它被我翻译成英文。 – Brian 2009-12-22 23:41:15

回答

19

您还需要部署MinGW的运行时DLL(mingwm10.dll)。该文件位于您的Qt\2009.5\mingw\bin目录中。

还要注意您的应用程序是否以调试模式或发布模式编译。我刚刚用一个hello world类型的应用程序和Qt Creator进行了测试。在debug文件夹中,我复制了libgcc_s_dw2-1.dll,mingwm10.dll,QtCored4.dllQtGuid4.dll,它工作正常。

,请注意d在DLL名称,它代表调试:QtCored4.dll

请参阅Qt 4.6: Deploying an Application in Windows。 Qt的5,检查​​

+0

我复制了该文件和libgcc_s_dw2-1.dll,但发生了以下错误消息。程序的起点在QtCore4.dll中找不到。这个错误信息可能并不完全是因为它被我翻译成英文 – Brian 2009-12-22 23:46:26

+0

@brian>你使用的是哪个版本的Qt,这是LGPL版本吗?你是否注意到Qt库的调试和发布版本? – 2009-12-23 17:56:06

+0

谢谢。我解决了这个问题。它失败了,因为我使用位于Qt \ 2009.5 \ bin目录中的qtcore.dll和qtgui.dll。当我使用位于Qt \ 2009.5 \ qt \ bin目录中的这些文件时,它运行良好。 – Brian 2009-12-25 11:32:47

1

尝试运行依赖关系的walker(http://dependencywalker.com/)以查看哪些dll丢失了?

通常,您不需要将这些Qt库移动到本地文件夹中,因为Qt安装应该将这些库添加到您的路径中。

一种可能性是,你建立调试,和Qt调试的DLL名称不同

11

如果你不希望有QT/MinGW的DLL文件,你应该编译QT静态的解释这里的依赖关系:http://qt.nokia.com/doc/4.6/deployment-windows.html#static-linking

+4

这假设您有执照。静态链接需要商业许可证。 – drowe 2010-06-01 16:37:17

+3

@Drowe:您不必购买商业授权,您只需要在LGPL/GPL授权下发布源代码。 – Seba 2011-03-19 19:29:29

+1

@Seba - 正确,好点。我(可能)不正确的假设。 – drowe 2011-03-24 18:11:50

2

您也可以使用静态链接,只需添加这行到.pro文件:

QMAKE_LFLAGS += -static-libgcc

我找到了解决办法here并成功地在WinXP测试与Qt Creator的2.2.0

-6

将所有qt dll直接复制到你的windows目录下“C:\ Windows \”并且不会出现qt dll错误 100%工作和简单 nb:不要在yo中创建一个qt dll文件夹你的Windows目录发布他们,因为他们是

+1

这是一个坏主意......从来没有对窗口进行垃圾处理,并且在部署应用程序时从不使用此方法。花时间查看需要哪些文件,并将它们与您的应用程序一起部署。虽然老问题/答案..最好建议人们这不是一个好主意 – Mayhem 2014-07-30 09:05:24

+0

这是一个不好的做法。如前所述,查找所需的dll并在部署期间相应地添加它们。 – 2016-08-02 07:54:05