ホーム   最近   SikiWiki   編集   新規 

[SikiLanguage] [式鬼言語航海日誌] 2007-09-08

2007/09/08_000000




ちょっとメモです。

コイツのせいで一日丸々無駄にしました……

リリースモードDLLとでバグモードDLLで発生する問題

「何やったンだい、一体」

いや、プログラムを組んでいて急に HEAP[test.exe]: Invalid Address specified to RtlFreeHeap というエラーが出て来るようになったので、一体全体どうしたのか、と。

「ほお」

まあ、どこかでアクセス違反でもしているのかと思いましたが、それにしてもおかしい。第一エラーが発生しているのはboost::xpressiveの奥の方。

最初はboost::xpressiveの使い方でも失敗したのかと思ったのですが、実際は全然関係なくて、コンパイルオプションの設定ミスでした。

“C/C ”の“プリプロセッサの定義”でDEBUGを指定しているにもかかわらず、“コード生成”の“ランタイム ライブラリ”をマルチスレッド(/MT)に指定してしまっていたんですね。

あとは上記のリンク先にある通りです。式鬼のソースはDEBUG指定をベースにコンパイルされているにもかかわらず、boost::testで使用するライブラリは“libboost_unit_test_framework-vc80-mt-s-1_34_1.lib”(マルチスレッド版)になってしまい、メモリの解放でエラーが発生……

「あらら、マヌケだねぇ」





制作・著作: 野分(nowake) at fiercewinds.net (Creative Commons 表示-継承 2.1 日本)