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

私はVS2010、Windows 7 N 64ビット、Visual Studio 2010用のQt 4.8.2を使用しており、QStringメソッド「toStdString()」(または何らかの関連)を使用すると、未処理の例外が発生します。

どこで線を使うかは問題ではない

std::string cadenita = str.toStdString();

未処理の例外が発生します。この特定のケースでは、メソッド「関数」のスコープから出た直後に発生します。しかし、それはスコープエスケープの現在のコンテキストで発生します (つまり、この行をオブジェクトのコンストラクターに入れると、コンストラクターの最後まで期待どおりに進み、その後、より高いスコープレベルに進む必要があるときに、それはUnhandled Exception エラーが送信されます)。

試行錯誤によって問題を .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 の出力は次のとおりです。

'C_plus_plus_QT_project.exe': Loaded 'C:\Users\aravasio\Desktop\C_plus_plus_QT_project\Debug\C_plus_plus_QT_project.exe', Symbols loaded. 'C_plus_plus_QT_project.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll'、PDB ファイルが見つからないか、開けません 'C_plus_plus_QT_project.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', PDB ファイル 'C_plus_plus_QT_project.exe' を開きます: ロードされた 'C:\Windows\SysWOW64\KernelBase.dll', PDB ファイル 'C_plus_plus_QT_project.exe' が見つからないか、開くことができません: ロードされた 'C:\Users\aravasio\Desktop\C_plus_plus_QT_project\ Debug\QtGui4.dll'、バイナリはデバッグ情報でビルドされませんでした。'C_plus_plus_QT_project.exe': ロードされた 'C:\Windows\SysWOW64\gdi32.dll'、PDB ファイル 'C_plus_plus_QT_project.exe' が見つからないか、開くことができません: \Windows\SysWOW64\oleaut32.dll'、PDB ファイル 'C_plus_plus_QT_project.exe' が見つからないか、開くことができません: ロードされた 'C:\Windows\SysWOW64\ole32.dll'、PDB ファイル 'C_plus_plus_QT_project.exe' が見つからないか、開くことができません:ロードされた 'C:\Windows\SysWOW64\imm32.dll'、PDB ファイル 'C_plus_plus_QT_project.exe' が見つからないか、開くことができません: ロードされた 'C:\Windows\SysWOW64\msctf.dll'、PDB ファイル 'C_plus_plus_QT_project .exe': Loaded 'C:\Windows\SysWOW64\winmm.dll', Cannot find or open the PDB file 'C_plus_plus_QT_project.exe': Loaded 'C:\Windows\SysWOW64\winspool.drv', Cannot find or open the PDB file PDB ファイル 'C_plus_plus_QT_project.exe': ロードされた 'C:\Users\aravasio\Desktop\C_plus_plus_QT_project\Debug\QtCore4.dll'、バイナリはデバッグ情報でビルドされませんでした。' C_plus_plus_QT_project.exe': ロードされた 'C:\Windows\SysWOW64\ws2_32.dll'、PDB ファイルが見つからないか、開くことができませんPDB ファイル 'C_plus_plus_QT_project.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\msvcp90.dll'、PDB ファイル 'C_plus_plus_QT_project' が見つからないか、開くことができません:LoadC \Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\msvcr90.dll'、PDB ファイル 'C_plus_plus_QT_project.exe' が見つからないか、開くことができません: 'C:\Windows\SysWOW64\msvcp100d.dll' が読み込まれました 'C_plus_plus_QT_project.exe': ロードされた 'C:\Windows\SysWOW64\msvcr100d.dll'、シンボルがロードされました。' C_plus_plus_QT_project.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll', PDB ファイルが見つからないか、開けませんC_plus_plus_QT_project.exe の 0x53b8ad7a (msvcp100d.dll) での PDB ファイルの初回例外: 0xC0000005: アクセス違反の読み取り場所 0xccccccd0。C_plus_plus_QT_project.exe の 0x53b8ad7a (msvcp100d.dll) で未処理の例外: 0xC0000005: 場所 0xccccccd0 を読み取るアクセス違反。アクセス違反読み取り場所 0xccccccd0。C_plus_plus_QT_project.exe の 0x53b8ad7a (msvcp100d.dll) で未処理の例外: 0xC0000005: 場所 0xccccccd0 を読み取るアクセス違反。アクセス違反読み取り場所 0xccccccd0。C_plus_plus_QT_project.exe の 0x53b8ad7a (msvcp100d.dll) で未処理の例外: 0xC0000005: 場所 0xccccccd0 を読み取るアクセス違反。

私のシステムに関するその他の情報を提供できる場合は、喜んで提供します。

これは Qt のバグではないと推測することしかできません。自宅ではまったく問題がないからです (ただし、自宅では x86 W7 を使用しているため、良い例ではない可能性があります)。

誰もこれについて知っていますか?私はかなりグーグルで検索しましたが、すべてのエラーは古いホットフィックスで対処されているようです.

船を放棄して VS2008 を試す必要がありますか? x64 環境で動作しますか? (リリースは、x64 ではなく、x86 向けになる予定です)

4

1 に答える 1

2

デバッグ ターゲットをコンパイルしましたが、それを Qt dll のリリース バリアント ( QtCore4.dllandQtGui4.dllではなくQtCored4.dlland QtGuid4.dll) にリンクしました。

于 2012-07-23T21:07:54.983 に答える