我不知道该怎么做 . 我编写了一个读取.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 回答
解决了!我知道它不是指针相关的 . 发现这篇文章,尝试了它所说的,现在它完美无瑕 . 我的依赖项中缺少MSVCRTD.lib . 为什么在任何地方都没有提到使用fstream的先决条件是疯狂的 . 不能相信包含是不够的 .
“我必须更改运行时库设置以使用多线程DLL(/ MD),然后将:msvcrtd.lib添加到我的依赖项中,这解决了我在调试模式下构建时遇到的问题 . ”
http://www.gamedev.net/topic/660218-strange-ifstream-crash/