【问题标题】:Link static library in another static library在另一个静态库中链接静态库
【发布时间】:2012-08-30 13:41:43
【问题描述】:

我需要将 Abaqus ODB C++ API 静态库链接到另一个静态库中。我可以让它“工作”,但我收到很多链接器警告。所有警告都是 LNK4006 和 LNK4221,并且与 API 库有关。

我想在主项目中链接生成的静态库。当我这样做时,应用程序会启动并给我一条消息,例如The application was unable to start correctly 0xc000007b.

如果不清楚: API Lib -> MyProj Lib-> MainProj


请看下面 Paul 的回答。您不能像这样嵌套静态库,如果您认为需要,则需要了解有关链接阶段的更多信息。相反,主项目需要链接两个依赖的静态库。

【问题讨论】:

    标签: c++ visual-studio static-libraries


    【解决方案1】:

    您不能“在库中包含库”。您将这两个库链接到您的应用程序,这显然是您已经完成的。您只需要遵循 c++ 程序的一般规则:只允许使用一种符号定义,并且您需要防止潜在的名称冲突。

    【讨论】:

    • 所以我可以在主项目中包含两个库,即使一个依赖于另一个?我了解只允许对符号进行一种定义。 API 库是罐装的。
    • 不,您必须将这两个库链接到由您的主项目产生的程序。在 VS 中,您创建一个“可执行”项目类型并将两个库设置为“引用”。
    • MyProj Lib 依赖于API Lib。我可以在MainProj 中链接它们,但是当我去构建MyProj Lib 时这将如何工作?
    • 当MyProj Lib 被编译时,它(或编译器/图书馆员)不需要知道API Lib 的符号在哪里。它只需要知道它们已被声明。当链接MainProj Exe时,链接器需要这些符号。
    猜你喜欢
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多