Qt 4.8.2 QString toStdString未处理的异常

时间:2012-07-23 19:41:12

标签: visual-studio-2010 qt windows-7 64-bit

void QuinielaApuesta::funcion(QString & str)
{
    std::string cadenita = str.toStdString();
    std::cout << cadenita << std::endl;
}

我在Qt 4.8.2 for VS2010,Windows 7 N 64-bit,Visual Studio 2010并使用QString方法&#34; toStdString()&#34; (或某些相关的东西)会导致未处理的异常。

在哪里使用

并不重要
std::string cadenita = str.toStdString();

这将导致未处理的异常。在这种特殊情况下,它是在我退出方法&#34; funcion&#34;范围之后发生的。但是它发生在范围转义的当前上下文中(也就是说,如果你将这一行放在一个对象的构造函数中,它将按预期进行直到构造函数结束,然后它应该进入更高的位置范围级别,它将发送一个未处理的异常错误)。

我已经通过反复试验将问题隔离到.toStdString,我不能说其他方法是否(或可能)有同样的问题。但是,我可以说,只要对该行进行评论,一切正常。事实上,如果我用简单的

替换所述行
std::cout << "Some Funny Test Text" std::endl;

这一切都很好,花花公子。

错误是

  

C_plus_plus_QT_project.exe中0x53b8ad7a(msvcp100d.dll)的未处理异常:0xC0000005:访问冲突读取位置0xccccccd0。

然后在文件xutility中,第201行

 #if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy != 0)
    {   // proxy allocated, drain it
    _Lockit _Lock(_LOCK_DEBUG);

    for (_Iterator_base12 **_Pnext = &_Myproxy->_Myfirstiter;
        *_Pnext != 0; *_Pnext = (*_Pnext)->_Mynextiter) // HERE IS THE LINE WHERE THE BREAK KICKS IN
        (*_Pnext)->_Myproxy = 0;
    _Myproxy->_Myfirstiter = 0;
    }

Visual Studio的输出是:

  

&#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Users \ aravasio \ Desktop \ C_plus_plus_QT_project \ Debug \ C_plus_plus_QT_project.exe&#39;,已加载符号。   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ ntdll.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ kernel32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ KernelBase.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Users \ aravasio \ Desktop \ C_plus_plus_QT_project \ Debug \ QtGui4.dll&#39;,二进制文件未使用调试信息构建。   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ gdi32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ user32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ advapi32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ msvcrt.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ sechost.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ rpcrt4.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ sspicli.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ cryptbase.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ lpk.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ usp10.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ comdlg32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ shlwapi.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ winsxs \ x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af \ comctl32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ shell32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ oleaut32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ ole32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ imm32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ msctf.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ winmm.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ winspool.drv&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Users \ aravasio \ Desktop \ C_plus_plus_QT_project \ Debug \ QtCore4.dll&#39;,二进制文件未使用调试信息构建。   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ ws2_32.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ nsi.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ winsxs \ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57 \ msvcp90.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ winsxs \ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57 \ msvcr90.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ msvcp100d.dll&#39;,已加载符号。   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ msvcr100d.dll&#39;,已加载符号。   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ uxtheme.dll&#39;,无法找到或打开PDB文件   &#39; C_plus_plus_QT_project.exe&#39;:已加载&#39; C:\ Windows \ SysWOW64 \ dwmapi.dll&#39;,无法找到或打开PDB文件   C_plus_plus_QT_project.exe中0x53b8ad7a(msvcp100d.dll)的第一次机会异常:0xC0000005:访问冲突读取位置0xccccccd0。   C_plus_plus_QT_project.exe中0x53b8ad7a(msvcp100d.dll)的未处理异常:0xC0000005:访问冲突读取位置0xccccccd0。

如果我能提供有关我的系统的任何其他信息,我将很高兴。

我只能做出某种有根据的猜测,这不是Qt错误,因为在家我根本没有问题(但在家里我使用的是x86 W7,所以它可能不是一个好例子)

有人知道吗?我已经搜索了相当多的内容,但是旧的修补程序似乎已经解决了每个错误。

我应该放弃发货并试试VS2008吗?它适用于x64环境吗? (发布将用于x86,顺便说一句,而不是x64)

1 个答案:

答案 0 :(得分:2)

您编译了调试目标,但是您将其与Qt dll的发布变体(QtCore4.dllQtGui4.dll而不是QtCored4.dllQtGuid4.dll)相关联。