原来静态链接是有效的,但只适用于Qt库。我的第三方库QtSerialPort没有静态链接。经过一些研究后,我发现要么必须静态构建这个库,要么必须直接链接到.pro文件中的一个.pro文件。
我不知道该怎么做,因为QtSerialPort似乎不是为静态链接而设计的。
我真的不明白.pri方法,并在以下两个链接中作了含糊的描述:http://qt-project.org/forums/viewthread/15223 http://www.qtcentre.org/archive/index.php/t-54505.html
有没有人对如何让这两种方法发挥作用有任何意见?或者是另一种方法?
而且,MSVCP100.dll并不是静态链接,如果有人可以给我提供任何建议。
==================================================================================
我试图让Qt静态地链接库,这样我就可以创建一个独立的应用程序。我已经学习了关于如何静态构建Qt然后构建静态应用程序的各种教程,但是我没有多少运气。我相信我已经成功地构建了带有静态链接的Qt,因为应用程序的大小已经从79 Qt增长到了7+MB,但是我仍然收到错误,说缺少QtCore4.dll和QtSerialPort.dll。另外,我在使用这种静态配置时遇到的另一个问题是,当我关闭我的程序时,Windows认为它已经崩溃,并给了我一个窗口,说明MyProgram.exe已经停止工作了。
我在一台使用MSVC 2010和QT4.8.5的Windows机器上,并且使用第三方库QtSerialPort。
根据我读过的指南,我所做的是:
下载并解压qt-everywhere-opensource-src-4.8.5.zip Open /mkspec/mwin32-msvc2010/qmake.conf,并将折叠行更改为
CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target和
QMAKE_CLFAGS_RELEASE = -O2 -MT然后,我打开MSVC2010命令提示符并对其进行cd处理。然后输入命令
configure -static -release -platform win32-msvc2010
nmake sub-src完成后,我打开我的项目并添加
CONFIG += static到.pro文件。在QtCreator中,我进入项目,管理工具包,然后进入Qt版本,并浏览到我刚刚生成的qMake。我用这个版本的qMake添加了一个新的工具包。然后,我清理所有,切换到这个新的工具包,并运行qmake从QtCreator。然后使用msvc2010命令提示符转到生成文件的目录,然后
nmake release这会生成一个相当大的.exe,但正如我所说的,它仍然取决于两个..dll的。
发布于 2014-01-03 19:16:18
对于外部库的静态链接,有几个选项,两者各有优缺点。
为静态链接自己编译库。链接到它。
.pro/.pri文件中可以有类似于.pro/.pri等的内容。只需为库编译静态链接并转到第4步就可以了!.pro/.pri文件中,将CONFIG += dll替换为CONFIG += static。QTSERIALPORT_EXPORT,它在链接时扩展到共享库构建/其头文件使用中的Q_DECL_EXPORT/Q_DECL_IMPORT。您需要找到定义此QTSERIALPORT_EXPORT的位置,并将其替换为空定义:
#定义QTSERIALPORT_EXPORT // in源文件
或
在..pro/..pri文件中定义+= QTSERIALPORT_EXPORT #.lib/.a文件,将库头文件用于项目中的符号声明。将库源文件包含到您的项目中并在其中编译它们(根本没有链接)。
SOURCES ).pro文件中。或者将正确的.pri文件包含到您的.pro中,如果库作者提供它用于项目内编译(即include(QtSerialPort.pri)或其他东西)。https://stackoverflow.com/questions/20533240
复制相似问题