包括fstream但是没有找到ifstream"和"标识符未定义"

时间:2014-11-05 16:05:58

标签: c++ string c++11 fstream

我不知道该怎么做。我编写了一个读取.obj文件的函数,与其他许多用于处理文本文件信息的示例函数不同。我包括了fstream,iostream和sstream。它汇编。然而,当我运行它时,我得到:

  • 抱怨的内存地址(ntdll.dll)的未处理异常 关于访问违规写作的位置(我读了,不是 写入...)。

  • 我的变量值表" ifstream myfile"读取标识符" myfile"未定义"。如果我在" ifstream myfile(...)"上休息一下它读取的行"无法读取内存"代替。读取字符串字符时出错也会发生在未处理异常之前。

  • 在getline调用期间,执行在fstream中停止:

    virtual void __CLR_OR_THIS_CALL _Lock()
    {   // lock file instead of stream buffer
    if (_Myfile)
        _CSTD _lock_file(_Myfile);
    }
    

相关代码,不多见......非常直接的东西。 "文件"是一个const char *,它读取" C:\ cube.obj"。使用命名空间标准

ifstream myfile(file, ios::in);

if (myfile.is_open())
{
    if (myfile.good())
    {
        string line;
        while (std::getline(myfile, line))
        {
            // Foo
        }
    }
}

myfile.close();

我不明白myfile是如何定义的,尽管直接声明它。 fstream显然是正确的包含和可访问。该文件应该在哪里。

如何进一步调试?教我,哦明智的。在Visual Studio 2013中使用C ++ 11。

1 个答案:

答案 0 :(得分:0)

解决了!我知道它不是指针相关的。发现这篇文章,尝试了它所说的,现在它完美无缺。我的依赖项中缺少MSVCRTD.lib。为什么在任何地方都没有提到使用fstream的先决条件是疯狂的。不能相信包含是不够的。

“我必须更改运行时库设置以使用多线程DLL(/ MD),然后将:msvcrtd.lib添加到我的依赖项中,这解决了我在调试模式下构建时遇到的问题。”

http://www.gamedev.net/topic/660218-strange-ifstream-crash/