用于windows的Qt应用程序的编译发行版

用于windows的Qt应用程序的编译发行版,qt,qt4,Qt,Qt4,我成功地编译并运行了我的Qt应用程序。但是,当我将.exe文件移到其原始路径之外时,我发现我必须手动复制Qt dll(例如,mingw10.dll、qtcore4.dll)。是否有任何动态方式将这些库与我的应用程序链接?如果DLL位于应用程序的路径上,则它们将被找到并工作。因此,您可以将Qt二进制文件/DLL的位置添加到%PATH%环境变量中。如果要为应用程序创建安装程序,则需要将这些库打包,以便它们位于bin目录中,或者需要每个用户自己安装并可能编译Qt(提示:使用第一个选项。:)如果DLL位

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

如果DLL位于应用程序的路径上,则它们将被找到并工作。因此,您可以将Qt二进制文件/DLL的位置添加到%PATH%环境变量中。如果要为应用程序创建安装程序,则需要将这些库打包,以便它们位于bin目录中,或者需要每个用户自己安装并可能编译Qt(提示:使用第一个选项。:)

如果DLL位于应用程序的路径上,然后他们会被找到并工作。因此,您可以将Qt二进制文件/DLL的位置添加到%PATH%环境变量中。如果您要为应用程序创建安装程序,您需要将这些库打包到bin目录中,或者您必须期望每个用户自己安装并可能编译Qt(提示:使用第一个选项。:)

我想您的意思是希望“静态地”将这些库与应用程序链接。 基本上,这意味着一切都将在exe中滚动,您将不再需要这些DLL

静态链接有优点,但也有缺点。在你走这条路之前,你应该绝对确定这是你想要做的

查看这个链接,它解释了深度上的差异

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

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


您还应该验证您的Qt许可证。如果您使用的是Qt LGPL许可证,并且希望静态链接,则必须包含所有对象文件(.o和.obj),正如Mihai Limbășan在其评论中明智地解释的那样。如果您购买并支付了Qt,那么您就没有问题。

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

静态链接有优点,但也有缺点。在你走这条路之前,你应该绝对确定这是你想要做的

查看这个链接,它解释了深度上的差异

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

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


您还应该验证您的Qt许可证。如果您使用的是Qt LGPL许可证,并且希望静态链接,则必须包含所有对象文件(.o和.obj),正如Mihai Limbășan在其评论中明智地解释的那样。如果您购买并支付了Qt,那么您就没有问题。

静态链接本身并不违反LGPL,但您必须提供应用程序的.o/.obj文件,以便最终用户可以通过将您的对象文件链接到不同(兼容)的Qt版本来重建工作的可执行文件。更多详情,请参见:这就是我为什么说这是一个有争议的问题没有那么多的争议,因为人们对LGPL了解甚少:)LGPL在这件事上非常清楚,只是没有人喜欢阅读许可证(包括您的许可证)。静态链接不会违反LGPL本身,但是,您必须提供应用程序的.o/.obj文件,以便最终用户可以通过将您的对象文件链接到不同(兼容)的Qt版本来重建工作的可执行文件。更多详情,请参见:这就是我为什么说这是一个有争议的问题没有那么多争议,也没有那么多人了解:)LGPL对这件事很清楚,只是没有人喜欢阅读许可证(包括你的许可证)