2017-04-14 213 views
1

我的任务是在没有安装Qt的计算机上的Windows项目中使用我的库。所以我想用静态链接的Qt代码编译我的库。QT静态库静态编译

我不明白如何编译我自己的代码到一个静态库,静态地链接所有Qt的东西。我已经下载了Qt源文件,并且使用msvc 2015静态编译(QT 5.8.0),并在Qt Creator中添加了新的静态qmake补全。我试图建立我的库,它成功了,但在其他计算机上使用它,没有安装Qt,得到许多链接器错误LNK2001LNK2019

这是一个错误的例子:

Error LNK2019 Unresolved External Symbol "public: int __thiscall 
QJsonValue::toInt(int)const " ([email protected]@@[email protected]) in function 
"public: int __thiscall QJsonValueRef::toInt(void)const " 
([email protected]@@QBEHXZ) ConsoleApplication2 c:\Users\Alex\documents\visualstudio 
2015\Projects\ConsoleApplication2\ConsoleApplication2\TcpClient.lib(tcpthreadpart.obj) 

所以,据我所知,所有的Qt源并没有链接到我的图书馆。在互联网上有一些指导如何编译一个.exe与静态链接的QT,我试过他们编译我的库,但它失败了。能否请你帮忙?

回答

0

库本身必须是一个动态库,因为这是现有工具可以与任何东西链接的唯一类型。当你针对静态Qt构建库时,库会根据需要静态使用Qt。

看起来你已经构建了一个静态库,因此没有将它“链接”到任何东西。从技术上讲,这是可能的,但没有工具可以做到这一点:(