我是QT的新手,我很享受这种体验,除了我无法将QT库静态链接到输出二进制文件。当我在QT目录之外运行输出文件时,我得到The program can't start beacuse QtCored4.dll is missing
。显然,QT动态链接他们的库并请求我没有的.dll。有没有办法将QT的库静态编译成静态二进制文件,因此不需要QT的dll?我问这个是因为我的项目已经达到了11个。我真的想减少必须用我的软件分发的文件数量。尺寸对我来说不是问题。感谢。
我尝试将CONFIG += static
添加到.pro
文件中,但无济于事。
答案 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的源数据包并进行编译。这需要一些时间,但并不是很复杂。