是否可以在Qt中同时使用静态和动态库

Is it possible to use both static and dynamic libs in Qt

本文关键字:静态 动态 Qt 是否      更新时间:2023-10-16

我有一个使用我编写的一些库的项目。在我的主项目中,我正在使用链接这些库

LIBS += -LPATH_TO_LIBS -lsomename

所以通常的东西。如果我将所有库构建为动态库,它可以正常工作。如果我将所有库构建为静态库,则会出现链接器错误,因为出于某种原因,我猜g++优先考虑动态库。但是,如果我将-Wl,-Bstatic添加到链接器选项中,那么这也很好用。这是我的问题:

我想使用一些库的静态版本和其他库的动态版本。我怎样才能做到这一点?

使用静态和动态库应该没有任何问题。以下命令行应该有效:

g++ object1.o object2.o -lmydynamiclibrary -lmystaticlibrary -o binary
请注意,静态库

应放在命令行中的目标文件和动态库之后,因为对象文件和库导入/导出符号是按顺序分析的,对于静态库,链接器仅保留当时已知需要的导出符号。

如果你想要一个更详细的答案,你应该告诉我们为链接器执行的命令行是什么,你得到的错误是什么