我尝试使用QfileDialog(作为静态fct)让用户选择并读取" .txt"文件,如下:
void VisOCMConfig::readNmbTiles()
{
QString m_findFile;
m_findFile = QFileDialog::getOpenFileName(0, tr("Open TextFile"),
QDir::homePath(), tr("Text files (*.txt)"));
QFile myfile(m_findFile);
if (!myfile.open(QIODevice::ReadOnly | QIODevice::Text))
return;
else
while (!myfile.atEnd())
{
m_scanPos = myfile.readLine();
m_nmbofLines++;
}
myfile.close();
qDebug() << "Scan Positions: (" << m_scanPos.size() << "): " << m_scanPos;
m_nmbofScan->setText(QString("#Tiles: %1").arg(m_nmbofLines));
}
其中m_scanPos是在VisOCMConfig.h中初始化的QByteArray。
当我运行程序时,它正常工作,直到突然发生中断,并显示以下消息:
0x000007FEFD5D7C8A(ole32.dll)中的未处理异常 VisOCMConfig.exe:0xC0000005:访问冲突读取位置 0xFFFFFFFFFFFFFFFF
我在其他问题上读到可能是因为使用了空指针,但我仍然对它失去了兴趣。你能说出我的错误吗?
答案 0 :(得分:1)
我一直有同样的问题。尝试使用“DontUseNativeDialog”作为标志。我相信这可以解决崩溃,但是你会留下一个非原生的对话框。
答案 1 :(得分:1)
我有同样的问题。解决方案也是使用非原生QFileDialog。 实际上它只出现在调试模式下。在发布模式中,evething很好。
相同的代码在QT4.8下工作。不知何故,它不是在使用QT5.6时。
答案 2 :(得分:0)
那些贬低这个问题的人(我赞成它)非常欢迎我也回答这个问题。
我在Qt 5.2.1中遇到了同样的问题 - 在使用QFileDialog :: getOpenFileName()之后的ole32.dll中出现相同的异常 - 不是立即,而是在10-60秒之后。如果我继续申请,它会发生,如果在打开文件后什么也不做,就等一段时间。 使用&#34; DontUseNativeDialog&#34;正如@aeson和@guest所建议的那样避免了这个问题。 我希望这些信息可以帮助他人。
@MartinBonner我认为标签应该改回QFileDialog,因为问题显然与它有关
答案 3 :(得分:-1)
我遇到了同样的错误 - 我的应用程序在调试模式下崩溃了。
如果在发生此问题时检查调用堆栈,您会注意到该问题与NetworkItemFactory.dll组件有关。
此处描述了类似的问题:Unhandled exception in marshal.cxx under VS2013
Microsoft已修复此问题,因此解决方案是应用Microsoft的修补程序Windows6.1-KB2718841