Windows的Qt应用程序的编译分发

时间:2010-11-30 19:29:19

标签: qt qt4

我成功地编译并运行了我的Qt应用程序。但是,当我将.exe文件移到其原始路径之外时,我发现我必须手动复制Qt DLL(例如mingw10.dll,qtcore4.dll)。有没有动态的方法将这些库与我的应用程序链接?

2 个答案:

答案 0 :(得分:4)

我认为您的意思是希望“静态”将这些库与您的应用程序链接起来。 基本上这意味着所有内容都将在您的exe中滚动,您将不再需要这些dll。

静态链接有一些优点,但也存在缺点。你应该完全确定这是你想要做的事情。

查看此链接,该链接解释了深度Dynamic Linking vs Static Linking

的差异

至于您的具体问题,如果您确定要使用静态链接,则必须将Qt设置更改为静态构建。默认情况下,Qt分布设置为使用动态链接。有一个方便的指南here

基本上,当您设置构建时,您必须运行“configure -static”来更改所有项目设置以使用静态链接而不是动态链接。然后重新构建Qt。

您还应该验证您的Qt许可证。如果你正在使用Qt LGPL许可证并且想要静态链接,你将必须包含所有目标文件(.o和.obj),如MihaiLimbăşan在他的评论中明智地解释的那样。如果您购买并支付了Qt,那么您没有问题。

答案 1 :(得分:2)

如果DLL位于应用程序的PATH上,那么它们将被找到并运行。因此,您可以将Qt二进制文件/ dll添加到%PATH%环境变量中。如果您要为您的应用程序创建一个安装程序,您需要将这些库打包,因为它们位于bin目录中 - 或者您必须要求每个用户都安装并可能自己编译Qt(提示) :选择第一个选项。:))