错误LNK2001:由于ifstream对象而导致未解析的外部符号

时间:2014-11-06 10:18:30

标签: c++ c++11

  

错误LNK2001:未解析的外部符号" __ declspec(dllimport)public:static class std :: locale :: id std :: codecvt :: id" (__imp_?编号@?$ @的codecvt DDH @ @@ STD @ 2V0locale 2 @ A)

     

1> CAssertLog.obj:错误LNK2001:未解析的外部符号" __ declspec(dllimport)public:static unsigned int __cdecl std :: codecvt :: _ Getcat(class std :: locale :: facet const * *,class std :: locale const *)" (__imp _?_ Getcat @?$ @的codecvt DDH @ @@ STD @ SAIPAPBVfacet区域设置@ 2 @ @@ PBV42 Z)

     

1> CAssertLog.obj:错误LNK2001:未解析的外部符号" __ declspec(dllimport)public:int       __thiscall std :: codecvt :: unshift(int&,char *,char *,char *&)const" (__imp_?不印字@?$ @的codecvt DDH @ @@ STD @ QBEHAAHPAD1AAPAD Z)

     

1> CAssertLog.obj:错误LNK2001:未解析的外部符号" __ declspec(dllimport)public:int __thiscall std :: codecvt :: out(int&,char const *,char const *,char const * &,char *,char *,char *&)const" (__imp_?出@?$ @的codecvt DDH @ @@ STD @ QBEHAAHPBD1AAPBDPAD3AAPAD Z)

     

1> CAssertLog.obj:错误LNK2001:未解析的外部符号" __ declspec(dllimport)public:int __thiscall std :: codecvt :: in(int&,char const *,char const *,char const * &,char *,char *,char *&)const" (__imp_?在@?$ @的codecvt DDH @ @@ STD @ QBEHAAHPBD1AAPBDPAD3AAPAD Z)

     

1> C:\ perforce \ sw \ apps \ gpu \ drivers \ common \ logassert \ Release \ logassert.dll:致命错误LNK1120:5个未解析的外部

问题说明:

现在,当我将此源行" ifstream fin;" 添加到源文件时,我看到上面的链接错误。如果我删除此源代码行,则代码成功编译。我已经为 ifstream 对象添加了支持的头文件和命名空间。不确定,为什么我看到这个链接错误。在 SO 上搜索了类似的错误并尝试了他们建议的解决方案,但这些解决方案并不适用于我。有什么想法吗?

示例代码

//In stdafx.h file below code is there 
#pragma once
#include<iostream>
#include<fstream>
using namespace std;

//In program.cpp
#include "stdafx.h"
class A
{
    void B();
    ifstream fin; //now if I make this member static then issue goes away. Can anybody explain?
}

1 个答案:

答案 0 :(得分:1)

看起来你并没有链接到标准库。 由于错误消息显示__declspec,我猜想 Windows环境,Visual Studio。默认情况下,这个 应该工作:进入项目的属性,然后进入 链接器:一般来说,忽略导入库应该是否,并且在 输入,忽略所有默认库应为否,并忽略 特定默认库应为空。 (这些是 默认值。)

否则:这可能是由于您的安装问题,例如:如果不是所有文件都存在。