首页 文章

包含fstream但“找不到ifstream”和“标识符未定义”

提问于
浏览
0

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

  • 内存地址(ntdll.dll)的未处理异常,它抱怨访问冲突写入位置(我正在阅读,而不是写...) .

  • 我的变量监视“ifstream myfile”读取标识符“myfile”未定义“ . 如果我在”ifstream myfile(...)“行中放置它,而不是读取”无法读取内存“ . 读取字符串字符时出错也发生在Unhandled Exception之前 .

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

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

相关代码,没什么可看的...非常直接的东西 . “file”是一个const char *,读取“C:\ cube.obj” . 使用命名空间std .

ifstream myfile(file, ios::in);

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

myfile.close();

我不明白我的文件是如何被定义的,尽管直接声明它 . fstream显然是正确的包含和可访问 . 该文件应该是它的位置 .

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

1 回答

  • 0

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

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

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

相关问题