我收到了这些错误:
1>test.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)" (__imp_??_D? $basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::basic_ofstream<char,struct std::char_traits<char>>(void)" (__imp_??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ) referenced in function _main
此测试代码工作正常:
int main(int argc, char **argv)
{
std::ofstream game_record_output;
}
直到我从一个从VS 2003 .NET转换的旧项目中包含.h
首先,我认为它可能会遇到一些问题:
http://msdn.microsoft.com/en-us/library/8h8eh904(v=vs.90).aspx
但是,我已经检查过MSVCRT.LIB和MSVCPRT.LIB正在被链接,所以旧的iostream没有被链接......
我不确定为什么会发生这种情况,我假设在包含链中包含了一些错误的文件,但我已经在旧的iostream .h的文件中搜索了包含链(即:(fstream.h) ,iomanip.h,ios.h,iostream.h,istream.h,ostream.h,streamb.h和strstrea.h))
那么,还有什么我应该检查的吗?
该项目使用MFC。
答案 0 :(得分:0)
根据以下内容更改Properties
中的Visual Studio项目C/C++ -> Code Generation -> Runtime Library
设置:
答案 1 :(得分:0)
此页面包含LNK2019的一些原因:https://msdn.microsoft.com/en-us/library/799kze2z.aspx。特别是,从VS 2003升级可能会触发此问题:
构建依赖项仅定义为项目依赖项 解。在早期版本的Visual Studio中,这个级别 依赖就足够了。但是,从Visual Studio 2010开始, Visual Studio需要项目到项目的引用。如果你的项目 没有项目到项目的参考,你可能会收到这个 链接器错误。添加项目到项目的引用来修复它。
或者
将使用本机wchar_t的代码与不使用本机wchar_t的代码混合使用。 C ++ 在Visual C ++ 2005中完成的语言一致性工作 wchar_t默认为本机类型。你必须使用/ Zc:wchar_t- 编译器选项,用于生成与编译的模块兼容的代码 使用早期版本的Visual C ++。如果不是所有模块都已 通过使用相同的/ Zc:wchar_t设置编译,类型引用可以 不解析兼容类型。验证所有wchar_t类型 模块是兼容的,或者通过更新使用的类型,或者 通过在编译时使用一致/ Zc:wchar_t设置。