C++ 在Windows上编译静态QT应用程序
我是QT新手,我很享受这种体验,除了我无法将QT库静态链接到输出二进制文件之外。当我在QT目录外运行输出文件时,我得到C++ 在Windows上编译静态QT应用程序,c++,qt,static-libraries,dll,C++,Qt,Static Libraries,Dll,我是QT新手,我很享受这种体验,除了我无法将QT库静态链接到输出二进制文件之外。当我在QT目录外运行输出文件时,我得到程序无法启动,因为缺少QtCored4.dll。显然,QT正在动态链接它们的库,并请求一个我没有的.dll。有没有办法将QT的库静态编译成静态二进制文件,这样就不需要QT的DLL了?我这样问是因为我的项目已经达到了11.dll,我真的很想减少必须随软件分发的文件量。尺寸对我来说不是问题。谢谢 我尝试将CONFIG+=static添加到.pro文件中,但没有效果。首先,除非您购买了
程序无法启动,因为缺少QtCored4.dll
。显然,QT正在动态链接它们的库,并请求一个我没有的.dll。有没有办法将QT的库静态编译成静态二进制文件,这样就不需要QT的DLL了?我这样问是因为我的项目已经达到了11.dll,我真的很想减少必须随软件分发的文件量。尺寸对我来说不是问题。谢谢
我尝试将
CONFIG+=static
添加到.pro
文件中,但没有效果。首先,除非您购买了商业许可证,否则无法静态链接Qt。这样做会使您违反LGPL许可证,非商业版本是根据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'
其他选项也有详细说明。如果您下载了源代码,则这些说明适用,但是您可能必须将当前目录添加到path变量,如下所示:
set PATH=%cd%\bin;%PATH%
整个过程大约需要一个小时。首先,除非您购买了商业许可证,否则无法静态链接Qt。这样做会使您违反LGPL许可证,非商业版本是根据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'
其他选项也有详细说明。如果您下载了源代码,则这些说明适用,但是您可能必须将当前目录添加到path变量,如下所示:
set PATH=%cd%\bin;%PATH%
整个过程大约需要一个小时。您需要下载QT的源数据包并编译它。这需要一些时间,但并不复杂
- 下载并解压缩QT源代码
- 启动编译器外壳程序(Visual Studio或mingw)
- 在QT源目录中执行configure-在此处添加静态编译标志
- 执行make(Visual Studio nmake)
- 根据机器的速度,等待几个小时
- 下载并解压缩QT源代码
- 启动编译器外壳程序(Visual Studio或mingw)
- 在QT源目录中执行configure-在此处添加静态编译标志
- 执行make(Visual Studio nmake)
- 根据机器的速度,等待几个小时