私はVisual C++ 2008 SP1を使用しています。私はデバッグビルド設定でQTアプリ(GUI、.exe)を持っています。これは、CRTのMulti-threaded Debug DLLバージョン、MSVCRTD.libを使用するように設定されています。リリースビルドライブラリ(MSVCRT.lib)に対してどのようにデバッグ.exe(MSVCRTD.lib)をビルドしますか?
リリースモードでビルドされたマルチスレッドDLL(非デバッグ)バージョンのCRT(別名MSVCRT.lib)を使用しているサードパーティのライブラリとリンクしています。
リンク時に実行されますが、起動時にクラッシュします。リンク中に警告が表示されます:
リンク:警告LNK4098:defaultlib 'MSVCRT'は他のライブラリの使用と競合します。使用/ NODEFAULTLIB:ライブラリ
私は
/NODEFAULTLIB:msvcrt.lib
設定しようとしたが、それが欠けているシンボルによる誤差を結ぶ5になりました。2つの異なるライブラリを使用することはできませんか?代替手段は何ですか?私が持っているサードパーティライブラリからDLLを作成できますか?それとも第三者がやるべきことなのでしょうか?起動時
例外がある:
"MYAPP.EXE中で未処理の例外.......:...... アクセス違反読み取り位置0x00000000f"
以下でありますアプリの後にコールスタックが実行され、それがクラッシュ:混合およびデバッグを照合し、構成ライブラリを離したときに、私はこれと同様の問題を見てきました
MyApp.exe!std::_Aux_cont::_Getcont() + 0xa bytes C++
MyApp.exe!std::_Iterator_base_aux::_Getmycont() + 0x1b bytes C++
MyApp.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> >,0> >::const_iterator::operator*() + 0x28 bytes C++
MyApp.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> >,0> >::iterator::operator*() + 0xf bytes C++
MyApp.exe!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> > >::operator[]() + 0xe9 bytes C++
MyApp.exe!ThirdPartyLib::client::`anonymous namespace'::init_xlt_mode() + 0x5f bytes C++
[email protected]() + 0x8d8f3 bytes C++
msvcr90d.dll!_initterm(void (void)* * pfbegin=0x006c4468, void (void)* * pfend=0x006cb0b8) Line 903 C
MyApp.exe!__tmainCRTStartup() Line 501 + 0xf bytes C
MyApp.exe!WinMainCRTStartup() Line 403 C
kernel32.dll!7c817067()
起動時にクラッシュするのは何ですか? – LeopardSkinPillBoxHat
こんにちは、私はちょうど上記の元の記事をより詳細とあなたの質問への答えで更新しました。 – ApplePieIsGood