在Windows上CMa​​ke链接错误

时间:2014-01-02 13:25:39

标签: linker cmake lnk2019

我有一个恼人的CMake问题。我有一个包含多个目录的项目,例如(理论上):

  • 编译器 - >生成compiler.exe和compiler.dll
    • 这是纯粹的C ++
    • 然而,由于使用了一些奇特的东西,compiler.dll需要链接到machine.dll(见下文)......
    • 并且compiler.dll是一个SHARED库
  • 机器 - >生成machine.exe和machine.dll -
    • 这是一半C和一半C ++。 C ++部分需要链接到compiler.dll

所以这里出现了循环依赖,在Linux上非常优雅地解决了,但是在MSVS2012上,链接器抱怨LNK2019 ...未解析的外部符号。这是可以理解的,因为当我看到编译时,顺序如下:

  1. 它编译机器的C文件
  2. 它试图编译机器的C ++文件......这里它在链接失败,因为编译器的C ++文件还没有编译......
  3. 如何解决此问题?

1 个答案:

答案 0 :(得分:0)

通过将共享库转换为静态库并将必要部分提取到共享库中来解决问题,而不保持循环性。