最終的に別のクライアント アプリケーションによって使用されるライブラリを出力するアプリケーションを構築しています。/MDd
最近、コード生成 (デバッグ CRT ライブラリ) を使用してデバッグ モードでアプリケーションをビルドしていて、デバッグ モードでも使用してクライアント アプリケーションがリリース CRT に対してビルドされていることを発見し/MD
ました。したがって、これによりメモリ ヒープの破損エラーが発生する可能性があります。確認するために、リリース モードですべてをテストしたところ、問題なく動作しているようです。
この問題に対処するために、release with debug info
ビルド ( /MD
) も実行して、クライアント アプリケーションのデバッグ ビルドをこのビルドにリンクしようとしrelwithdebinfo
ましたが、サンプルをテストしているときに、クライアント アプリケーションで奇妙な動作が見られます。正確には、文字列を割り当てるときは、次のように言います。
std::string client_str = some_namespace_in_my_library::class_name::string_name,
client_str が割り当てられておらず、空のままになっていることがわかりました。これは、すべてがデバッグでビルドされた場合 (ミックス アンド マッチが存在する場合) は正常に機能していました。なぜこれが起こっているのですか?上記の名前空間の文字列は、クラスの静的パブリック メンバーですclass_name
。これはすべて MS VC++ 2005 に関するものです。アドバイスやヘルプをいただければ幸いです。ありがとう!