VS2010 在流上链接问题

VS2010 Linking issue on ostream

本文关键字:链接 问题 VS2010      更新时间:2023-10-16

我收到这些错误:

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。

根据以下内容更改 Visual Studio 项目Properties C/C++ -> Code Generation -> Runtime Library中的设置:

  • 用于调试配置的多线程调试 DLL (/MDd(
  • 用于发布配置的多线程 DLL (/MD(

此页面包含一些导致LNK2019的原因:https://msdn.microsoft.com/en-us/library/799kze2z.aspx 。特别是,从VS 2003升级可能会触发此问题:

生成依赖项仅在 溶液。在早期版本的 Visual Studio 中,此级别 依附就足够了。但是,从Visual Studio 2010开始, Visual Studio 需要项目到项目的引用。如果您的项目 没有项目到项目的参考,您可能会收到此 链接器错误。添加项目到项目引用以修复它。

或者这个

将使用本机wchar_t的代码与不使用本机的代码混合使用。C++ 在Visual C++ 2005中完成的语言一致性工作 默认情况下wchar_t本机类型。您必须使用/Zc:wchar_t- 编译器选项,用于生成与编译的模块兼容的代码 使用早期版本的视觉C++。如果不是所有模块都已 使用相同的/Zc:wchar_t 设置进行编译,类型引用可以 不解析为兼容类型。验证所有类型wchar_t 模块通过更新使用的类型或 编译时使用一致的/Zc:wchar_t 设置。