在Windows上编译静态QT应用程序

时间:2012-01-07 06:14:39

标签: c++ qt static-libraries dll

我是QT的新手,我很享受这种体验,除了我无法将QT库静态链接到输出二进制文件。当我在QT目录之外运行输出文件时,我得到The program can't start beacuse QtCored4.dll is missing。显然,QT动态链接他们的库并请求我没有的.dll。有没有办法将QT的库静态编译成静态二进制文件,因此不需要QT的dll?我问这个是因为我的项目已经达到了11个。我真的想减少必须用我的软件分发的文件数量。尺寸对我来说不是问题。感谢。

我尝试将CONFIG += static添加到.pro文件中,但无济于事。

2 个答案:

答案 0 :(得分:3)

首先,除非您购买了商业许可证,否则无法静态链接Qt。这样做会使您违反分发非商业版本的LGPL许可证。我感觉到你的痛苦,我的软件有很多很多DLL。

幸运的是,如果你使用了安装程序,你可能确实拥有了DLL:你不需要从源代码构建,这应该是自动完成的。您可以在Qt \ Version \ bin中找到它们,其中Qt是您安装Qt的目录,version是您安装的Qt版本。例如,我可以在G:\ Libraries \ Qt \ 4.7.1 \ bin。

中找到 但是,我确实遇到了一些没有构建DLL的问题 - 一个用于处理OpenGL的问题 - 并且执行了重建。当我切换Visual Studio的版本时,我也这样做了。我认为能够这样做很方便,很容易,在Qt目录中打开一个终端,然后执行:

configure.exe -platform XXX'

其中XXX表示您要执行的构建类型。有效选项包括win32-msvc2005,win32-msvc2008,win32-msvc2010。所以我用:

configure.exe -platform win32-msvc2010'

其他选项详细here。如果您已下载源代码,则这些说明适用,但您可能必须将当前目录添加到路径变量中,如下所示:

set PATH=%cd%\bin;%PATH%

整个过程大约需要一个小时。

答案 1 :(得分:2)

您需要下载QT的源数据包并进行编译。这需要一些时间,但并不是很复杂。

  • 下载并解压缩QT源
  • 启动编译器shell(Visual Studio或mingw)
  • 在QT源目录中执行configure - 在此处为静态编译添加标志
  • 执行make(Visual Studio nmake)
  • 根据机器的速度等待几个小时