/MT(静的マルチスレッドランタイムライブラリ)でコンパイルされたVisual Studio 2012にdllプロジェクトがあります。また、/MT (ライブラリ A) でコンパイルされたサードパーティの静的ライブラリもリンクしていますが、これまでのところ問題はありません。
問題は別の静的ライブラリ (ライブラリ B) にあり、残念ながら /MD でコンパイルされています。私のdllでは、両方をリンクする必要があり、それらのいずれにも代わるものはありません(別のオプションでそれらを再コンパイルすることはできません)。すべてを正常にリンクできましたが、メモリの割り当てと削除に問題があります。割り当てられたオブジェクトの削除に失敗することもあれば、別の奇妙なエラーが発生することもあります。これは、dll のさまざまな部分で使用されるメモリ管理関数が混在していることが原因であると考えています。間違っているかもしれません。
だから私の質問は、これは本当に混合メモリ管理機能によって引き起こされているのですか? もしそうなら、この仕事をまとめる方法はありますか?
私が考える唯一の解決策は、ライブラリ B を /MD でコンパイルされた別の dll にラップし、元の dll からそれを使用して、異なるメモリ管理関数が使用されるようにすることです。これが役立つかどうかはわかりませんが、避けたいと思います。