qt - 在Qt5中创建静态库并使用它

标签 qt qt5

我正在尝试为我的项目创建一个库。 (Qt5, Qt Creator, VS2010 编译器)

我从一个最小的测试样本开始来检查它是如何工作的。

1-我制作了一个包含带有方法的类的库

2-我编译它并获得Dll和Lib文件

3- 在主应用程序中,我成功添加了这个库及其到 .pro 和测试库的路径。

现在,我想摆脱 DLL 并使用 lib 文件作为静态库。

所以我将此行添加到我的库 .pro 文件中

CONFIG+=staticlib

现在,我在编译后得到了 lib 文件,但是我不能在我的项目中使用它并且我得到了未解析的外部符号......错误

当我删除 CONFIG+=staticlib 时,它又可以工作了!但它不是静态的。

这些是我添加到主项目的 .pro 文件以加载/链接库的行
INCLUDEPATH +="G:/TestLib/testLib"
LIBS +=-l"G:/Build/debug/testLib"

所以问题是:是否可以在 Qt(非商业许可)中拥有我自己的静态库?

如果是,我的方法有什么问题?

我应该更改 LIBS+=... 中的某些内容以指定其静态库吗?

我已阅读 This Article我的代码似乎没有问题。

请问有什么帮助吗?

编辑:问题已解决

问题是我们不需要静态库的 Q_DECL_EXPORT 和 Q_DECL_IMPORT !
在那篇粗略的虚幻文章中没有明确提到。

最佳答案

问题解决了

问题是我们不需要 Q_DECL_EXPORTQ_DECL_IMPORT对于静态库!在那篇粗略的虚幻文章中没有明确提到。
Q_DECL_EXPORTQ_DECL_IMPORT是动态库所必需的。

关于qt - 在Qt5中创建静态库并使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15521308/

相关文章:

c++ - QGraphicsPixmapItem mouseMoveEvent 不抓取时

python - 在Python中对齐QMenuBar

python - 将 QWidget 转换为 QOpenGLWidget

c++ - 通过 Bazel 在 macOS 上构建和运行 Qt 应用程序

c++ - QOpenGLWidget 的makeCurrent 不起作用?

c++ - 从字母数字 QString 中提取数字

c++ - 在QT应用程序中制作一个透明孔

c++ - 在运行时将 Qt 小部件添加到 MainWindow

c++ - Qt 4/5和Opengl API之间的opengl速度差异

c++ - 使用 QTreeView,如何仅突出显示具有调用函数的特定行/列?