在另一个静态库中链接静态库

Der*_*rek 2 c++ static-libraries visual-studio

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

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

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


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

Pau*_*lik 6

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

  • 编译MyProj Lib时,它(或编译器/库管理器)不需要知道API Lib中的符号在哪里。只需知道它们已被声明即可。当链接“ MainProj Exe”时,链接器需要这些符号。 (3认同)
  • 不,您必须将两个库都链接到主项目生成的程序。在VS中,您创建“可执行”项目类型,并将两个库都设置为“引用”。 (2认同)