c++ - QT静态库静态编译

标签 c++ qt visual-c++ static static-libraries

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

我不明白如何将我自己的代码编译成静态库,静态链接其中使用的所有 Qt 内容。我已经下载了 Qt 的源代码并使用 msvc 2015 对其进行了静态编译(QT 5.8.0),并在 Qt Creator complects 中添加了新的静态 qmake。我尝试构建我的库,它成功了,但是在没有安装 Qt 的其他计算机上使用它时,会出现许多链接器错误 LNK2001LNK2019

这是一个错误的例子:

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

因此,据我所知,所有 Qt 源都没有链接到我的库。网上有一些如何使用 qt 静态链接编译 .exe 的指南,我试过他们编译我的库,但失败了。你能帮忙吗?

最佳答案

库本身必须是一个动态库,因为这是现有工具可以与任何东西链接的唯一类型。当您针对静态 Qt 构建该库时,该库将按照您的意愿静态使用 Qt。

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

关于c++ - QT静态库静态编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43404433/

相关文章:

c++ - 如何在 Q3DSurface 中为每个 QSurfaceDataRow 设置不同的颜色?

c++ - 如何使用具有多个比较器功能的 std::multiset?

c++ - 使用-j1而不是-jN编译有什么好处

c++ - gets() 和 puts() 未在 dev c++ 的范围内声明

c++ - 使用 new/malloc 是否可以绕过本地指针的警告?

c++ - Linux 在多线程程序中处理特定线程上的信号

c++ - QFileDialog粘贴默认名称

c++ - QtRO - 类 qt 远程对象 - 如何在 TCP 之间连接 2 个或更多远程对等点

.net - 我想弹出我自己的对话框(在服务器上保存文件而不询问目标路径位置)而不是 adobe 的另存为对话框

c++ - 如何从 c c++ 中具有多个路径的字符串中提取文件路径?