c++ - 如何解决 Visual Studio 中的链接错误 2005?

标签 c++ visual-studio-2005 linker

error LNK2005: "public: __thiscall std::basic_ostream<char,struct std::char_traits<char> >::basic_ostream<char,struct std::char_traits<char> >(class std::basic_streambuf<char,struct std::char_traits<char> > *,bool)" (??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits
@D@std@@@1@_N@Z) already defined in msvcprtd.lib(MSVCP80D.dll)  libcpmtd.lib

当我尝试在子项目中包含 /clr 选项和 /MDd 选项时出现此错误。

所有项目都单独构建成功,但是当我构建主项目时,它显示了上面类似的错误。

如何解决这个问题?

我很生气。

最佳答案

确保您所有的独立项目都使用相同的运行时库进行编译,这在以下内容中指定:

Properties -> C/C++ -> Code Generation -> Runtime Library

如果您正在使用 /MDd,请确保所有其他项目也是如此。否则,当您在主项目中将它们全部链接在一起时,它将导入多个版本的运行时库,从而导致您观察到的错误。

关于c++ - 如何解决 Visual Studio 中的链接错误 2005?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/921001/

相关文章:

c++ - 使用我自己的源目录生成 vs2010 项目文件

c++ - 使用 boost program_options 失败并出现奇怪的编译错误

c# - 许多文本框的 onTextChanged 事件 c#

vb.net - Visual Studios 设计器实现中的表单继承

c# - C# 中的重载方法

c - 使用GDB时缺少ELF符号 "var"?

c - 链接时加载符号文件

opencv - 在 Visual Studio 2012 中安装 OpenCV

C++ 窗口创建/SDL

c++ - 当从 DirectX BackBuffer 拉伸(stretch)到 WIndow 时,Windows 使用点采样