使用C,C ++和C ++ / CLI项目解析LNK2005

时间:2012-04-05 14:57:15

标签: c++ c visual-c++ linker

我在尝试构建时遇到链接器错误(有一堆......这里就是这样):

error LNK2005: "public: int __cdecl std::ios_base::rdstate(void)const " (?rdstate@ios_base@std@@QEBAHXZ) already defined in msvcprt.lib(MSVCP90.dll)

我有一个C项目:

  • 配置类型:Static Libary(.lib)
  • 使用MFC:使用标准Windows库
  • 使用ATL:不使用ATL
  • 运行时库:多线程DLL(/ MD)

我有一个C ++项目:

  • 配置类型:动态库(.dll)
  • 使用MFC:使用标准Windows库
  • 使用ATL:动态链接到ATL
  • 运行时库:多线程DLL(/ MD)

我有一个C ++ / CLI项目依赖于上面的两个项目:

  • 配置类型:动态库(.dll)
  • 使用MFC:使用标准Windows库
  • 使用ATL:动态链接到ATL
  • 运行时库:多线程DLL(/ MD)
  • 公共语言运行时支持(/ clr)
  • 这链接到C项目.lib
  • 这是对C ++ DLL的项目引用

这些是使用Visual 2010构建的,但使用v3.5工具集(因此使用9.0)。

我见过的大多数解决方案都表明运行时库设置不同步。这不是这里的情况,它们都是多线程DLL。它们都是在Release x64中构建的。

这些项目设置是否会突然出现?我可以分享更多相关设置吗?

1 个答案:

答案 0 :(得分:0)

我建议在任何地方使用相同的设置而不是混合(静态库和dll项目)。如果我记得很清楚,我遇到了同样的问题。