标准库已在lib中定义,导致链接器错误
standard library already defined in lib, causing linker error
不知道我在这里做错了什么,但是说我有:
foo。
class foo
{
public:
int Get10(std::wstring);
};
foo.cpp
int foo::Get10(std::wstring dir)
{
return 10;
};
我将它编译为一个库,如果我将该库与相关的头文件(foo.h)一起包含在另一个项目中,并尝试调用foo的实例:
foo f;
f.Get10(L"ABC");
我得到一个链接错误说:
错误1错误LNK2005: "public: __thiscall .std:: _Container_base12:: ~ _Container_base12(空白)"(??1_Container_base12@std@@QAE@XZ)已经定义在foo.lib(foo.obj) C:foomsvcprtd.lib(msvcp100 .dll) footest
知道为什么会这样吗?
错误1错误LNK2005: "public: __thiscall .std:: _Container_base12:: ~ _Container_base12(空白)"(??1_Container_base12@std@@QAE@XZ)已经在foo.lib(foo.obj)中定义C: foo msvcprtd.lib (MSVCP100D.dll)脚
从我所看到的,这个错误消息意味着你试图包含MSVC运行时库两次。这可能是由于编译foo.lib
的运行时库选项:"多线程(/MT)"和测试项目的选项:"多线程DLL (/MD)"的结果。
检查两个项目的"Project Properties" ==> "C/c++ " ==> "Code Generation"下的Runtime选项,并确保它们在两个项目中是相同的。
您是否在任何。h文件中包含foo.h ?您可能需要添加头保护,以确保您不会在每个文件中定义该类多次:
#ifndef FOO_H_
#define FOO_H_
class foo
{
public:
int Get10(std::wstring);
}
#endif // FOO_H_
参见:http://en.wikipedia.org/wiki/Include_guard
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 使用标头保护的多个定义链接错误
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 升压program_options中的链接错误
- 使用 g++ 预处理器进行替换会导致链接错误
- 在调试配置中编译工作正常,但发布会给出链接错误
- 相邻矩阵设置链接错误
- 包含常量变量并包含在多个文件中的标头的链接错误
- C++链接错误,我理解但无法解决
- 是什么导致macOS Mojave上的GoogleTest链接错误