私はclrの下でコンパイルしているコードと、単一のプロジェクトで管理されていない他のコードを持っています。C++ STDを妨害するCLR?
私のcommon.hファイルには、必要なすべてのstdライブラリヘッダーが含まれています。これは、document_manager.cpp(CLR)に含まれるmain_window.h(WinForm)に含まれるmanager.h(manager.cpp(CLRなし)の前方宣言)に含まれています。
実行時に私はあらゆる種類の奇妙な動作をしますが、1つのインスタンスではフォームがロードされません。数回デバッグするためにプログラムを一時停止すると、malloc.cのstd :: stringのメモリを再割り当てしていないことがわかりました。コードを変更することで、ostreamでSystem :: InvalidMemory(私は思う)例外を受け取ることができます。
CLRがstdライブラリの管理を停止するにはどうすればよいですか?
誰かが自分のファイルのいずれかにソースを希望する場合は、尋ねてください。
編集: コールスタックでは、フォームのロード時に実行されるマネージコードがあります。ウィンドウのinitコールバックでは、ネイティブに変換した後、マネージャクラスを持っています。その後、私は
std::string error_msg;
error_msg = "Storage Manager: SQLite Error ("; <-- Executing Currently
error_msg += sqlite3_errcode(this->db_p);
error_msg += ") - ";
error_msg += sqlite3_errmsg(this->db_p);
*(this->log) << error_msg.c_str() << std::endl;
に取得し、コールスタックは、STDを示し::のbasic_string ::いくつかの他のstd ::機能、そして最終的にはそれが永遠に立ち往生しているmalloc関数、そして、割り当てる。
編集: ファイルの書き込みにスローされる例外:
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at manager.file_open(manager* , basic_string<char\,std::char_traits<char>\,std::allocator<char> >*)
at DocumentManager.main_window.file_open_mainmenu_Click(Object sender, EventArgs e) in c:\development\document manager\document manager\main_window.h:line 456
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
問題を再現するコードを投稿できますか?より具体的なエラーも役立つかもしれません。どの例外がスローされたのか、どこから例外が発生しているのかわからない場合は、デバッグするのがかなり難しくなります。 – jalf
上記の情報は十分ですか?私は問題を単純に再現するのに苦労していますが、私はそれを続けます。 –
なぜdownvotes?これは良い質問です。 +1 –