使用静态LIB和DLL时在多个对象中找到的符号

时间:2016-12-01 14:15:24

标签: c++ visual-c++ dll linker static-libraries

我想知道处理以下情况的正确方法是什么:

  • 包含A,B类的TheLibrary.LIB文件
  • First.DLL使用A类,因此它与TheLibrary.lib
  • 链接
  • Second.DLL使用First.DLL&中的代码。 A级和A级B类,因此它与First.DLL AND TheLibrary.lib
  • 链接

结果(如预期的那样)是A类有多个定义(TheLibrary.lib和First.lib)

问题是,处理这种情况的正确方法是什么?

我可以想到一些我不满意的选择:

  1. 强制Second.DLL使用它找到的第一个符号进行链接(/ FORCE:MULTIPLE)
  2. 使First.dll使用B类,因此它将在First.lib中。这样,Second.lib将不需要与TheLibrary.lib
  3. 链接
  4. 将TheLibrary.lib转换为DLL,但我们假设这是我真正想避免的事情

0 个答案:

没有答案