2010-09-09 112 views
6

我是Qt新手,但在C++中没有问题。我使用了Qt Creator并用一个按钮(如hello world)制作了一个简单的程序,然后构建了该项目。我是不是能够运行在Windows本身的可执行文件(创建者外),因为它需要这些DLL文件:170 MB Hello World - >用Qt部署应用程序

libgcc_s_dw2-1.dll 
mingwm10.dll 
QtGuid4.dll 
QtCored4.dll 

我发现这些文件,并把他们的exe旁边。现在该程序可以正常工作,但该文件夹的大小为170 MB,因为大的 Dll文件。这是部署Qt应用程序的一种方式。我知道他们是制作独立静态应用程序的一种方式,但这不是问题。我对dll很好,但依赖关系似乎太大了。是否有不同的方法来部署较小文件大小的项目?

感谢

+3

您是否尝试过发布qt dlls版本? – 2010-09-09 09:47:03

+0

是的,但它说:“程序入口点_Z5qFreePv不能位于动态链接库QtCore4.dll中”。然后我在这个文件夹中找到了另外一个QtCore4.dll:/ qt/bin,然后用它说:“程序入口点1QSettings @@ UAE @ XZ不能位于动态链接库QtCore4.dll中。 – Auxiliary 2010-09-09 09:54:17

+4

我认为你需要在发布模式下编译你的应用程序才能使用Qt dll的发布版本。 – tibur 2010-09-09 10:12:14

回答

17

为什么不做一个发布版本并使用发行版DLL而不是更大的调试DLL。

由于这是关于尺寸:

调试库

QtCored4.dll =〜37MB

QtGui4d.dll =〜157MB

推出库

QtCore.dll = 〜2.3Mb

QtGui4.dll =〜9MB

(通过查看我的Qt \ version \ bin目录中的大小)

+0

在我发布此消息之前,没有在原评论中提到这一点。但这是对这个问题的有效答案,所以我相信它应该放在这里... – radix07 2010-09-09 13:10:34

3

你这里有两个问题:

  • “程序的入口点未找到”:你有Qt库的多个版本安装。不好。您正在链接到导入库A,而在运行时您的可执行文件会找到一个dll B,这不是您链接的链接。链接时检查您的项目输出以查看VS使用哪个导入库。最简单的解决方案:删除/卸载与Qt相关的所有内容,并从头开始。同样调整您的项目设置。
  • 没有找到在运行时动态链接库的解决方案是使用Qt的dll目录添加到您的PATH
+0

尽管当DLL本身为170 MB时,这并没有帮助分发问题。 – 2010-09-09 14:23:36

+0

我知道;其他人已经指出,这是因为调试版本,所以我没有重复这些信息.. – stijn 2010-09-09 14:44:29

+0

“你已经安装了多个版本的Qt库” - 你能给出一个解决方案。我正在使用QtSDK,我有4.7 4.7 – Dewsworld 2012-06-23 13:40:47

1

如果您计划部署一个Qt应用程序的静态链接的版本,你应该考虑构建库的自定义版本您不需要disable all the features,从而最大限度地减少了库的大小。

+5

静态链接需要合适的商业Qt许可证FWIW。 – Rob 2010-09-09 12:11:34

+1

@Rob:Qt在LGPL下可用,只要你的应用程序是LGPL,你也不需要商业许可来静态链接它。然而,还有很多其他问题,如在这里陈述:http://doc.qt.nokia.com/4.6/deployment.html – 2010-09-09 16:07:37