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