2012-10-24 106 views
0

我有一个奇怪的问题。当我通过我的Qt文件对话框打开文件时,我的工具正常运行。 但是,当我将其他库中的dll绑定到VS 2010中的项目中时,该工具在我打开文件时崩溃。通过调试,我发现它发生在基本字符串的析构函数中。 下面的行引起问题:Qt和std :: string

std::string inputFilename = aFilenames.at(i).toStdString(); 

其中aFilenames是QStringList中。如果相反,我写:

std::string inputFilename = "C:\\test.txt"; 

然后它的工作。那么std :: string会出什么问题,以及为什么当我将另一个库的dll绑定到我的项目时发生这种情况?

+1

你确定你的位置,在特定的字符串'i'存在?你没有阅读向量/数组之外的任何地方? – Bart

+0

我无法重现该问题,您需要提供更多信息。 – bjoernz

+0

是的,我相信我不是没有限制的。我可以在调试器中看到它。无论如何,如果我不绑定DLL,它的作品。当我绑定dll(第三方库)时出现问题。但是我的第一个陈述和第二个陈述有什么区别?他们都是std :: strings ... – ISTB

回答

1

试试这个:

string(aFilenames.at(i).toLocal8Bit()) 
+0

它的工作。为什么?你能解释一下吗?此外,它是否便携? – ISTB

+0

我不知道,但我的Windows程序使用它以来,无数测试没有问题。 – Al2O3

+0

'QByteArray'如何以'const char []'结尾? ** upd **(这只是[显而易见](http://qt-project.org/doc/qt-4.8/qbytearray.html#operator-const-char--2a),不是吗?) – elmigranto

相关问题