【问题标题】:Is it necessary to include static dependency libraries of static dependency library是否需要包含静态依赖库的静态依赖库
【发布时间】:2016-06-08 16:46:57
【问题描述】:

我创建了一个静态库(libPdfWrapper.a),它将使用它的依赖库,然后我在 pdf 项目中使用 libPdfWrapper.a,但它在寻找 libPdfWrapper.a 依赖项时也认为它是静态库。

libPdfWrapper.a .pro 文件,包含 test1、test2、test3 依赖静态库

QT       -= gui

TARGET = PdfWrapper
TEMPLATE = lib
CONFIG += staticlib

LIBS += -L$${PWD}/dependencies -ltest1 -ltest2 -ltest3

当我只包含 lPdfWrapper 库时,pdf 项目 .pro 文件无法正常工作,导致链接错误未定义参考

QT       -= gui

TARGET = Pdf
TEMPLATE = app
LIBS += -L$${PWD}/dependencies -lPdfWrapper

带有 lPdfWrapper 库及其依赖项的 pdf 项目 .pro 文件开始工作

QT       -= gui

TARGET = Pdf
TEMPLATE = app
LIBS += -L$${PWD}/dependencies -lPdfWrapper -ltest1 -ltest2 -ltest3

有人可以解释一下这是必要的吗?如果是为什么?

【问题讨论】:

  • 我无法理解您的问题。如果您可以显示目录结构(tree 输出)、所有Makefile 内容以及您调用的make 命令,可能会有所帮助。预期是什么,这与您看到的有何不同?

标签: c++ qt makefile static-libraries


【解决方案1】:

当您将库编译为静态时,这意味着只有 YOUR 库将被静态链接,因此应用程序不需要 YOUR 库的 .lib 文件。

您的库需要的所有动态库,对于与您的静态库链接的应用程序仍然是必需的。

为了在您的库中包含所有依赖项,您应该将您的库链接到 test1、test2、test3 的静态版本。

【讨论】:

  • 感谢您的回复。构建静态库时的小说明,它确实包含依赖库?我想我的 library.a 包含 test1.a, test2.a test3.a
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
相关资源
最近更新 更多