Qt 非静态链接和 .pro 文件

Posted

技术标签:

【中文标题】Qt 非静态链接和 .pro 文件【英文标题】:Qt non-static linking and .pro files 【发布时间】:2011-01-06 21:32:35 【问题描述】:

我正在尝试构建一个使用 QtCore4 和 QtGui4 .dll 文件的 .dll。但是,我希望两个 Qt .dll 文件都以非静态方式链接。我已经阅读了很多关于 .pro 文件和静态链接的内容,但似乎没有人谈论与 Qt .dll 的动态链接。如何确保为动态链接构建 qt dll?

我遇到的问题是,我的应用程序中似乎有两个 dll 实例,一个在使用我的 dll 的应用程序中,然后一个用于 dll 本身,所以当我尝试获取一个窗口时处理里面的代码我的 dll 无法“看到”它; disjoint qtwidget sets 是常用的短语。

有什么建议吗?

【问题讨论】:

【参考方案1】:

除非您在配置参数中添加关键字“static”,否则 Qt 库应该已经构建为动态链接库。这是默认配置。

【讨论】:

谢谢 Jeremy,我该如何检查,我应该在哪个文件中检查配置是否已更改。我没有配置这个库,我只是把整个QT目录拖到我的电脑上,放到我的项目目录下?谢谢【参考方案2】:

dll 扩展意味着动态链接库。这意味着如果您将库编译为 dll,它将始终适用于动态链接。

(如果您为静态链接构建一个库,则它具有不同的扩展名并需要不同的配置。)

在 Qt 项目中,动态链接是默认选项。你不需要做任何事情来实现它。

【讨论】:

以上是关于Qt 非静态链接和 .pro 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将qt静态库代码还原动态库

QT Creator 中的部署和静态打包将 QT 和 OpenCV 链接到单个可执行文件中

Qt系列文章之三十七(基于QWidget 创建和使用静态链接库)

Qt系列文章之三十七(基于QWidget 创建和使用静态链接库)

55.Qt-将界面程序封装成静态库

55.Qt-将界面程序封装成静态库