Windows(64ビット)で作業しているプロジェクトの1つに問題があります。プログラムがクラッシュすることもあれば、クラッシュしないこともあります。この問題は、複数のリンクされたCランタイムに関連していると思われます。Windowsでこれを検出するにはどうすればよいですか?依存.exeを試してみましたが、CRTが報告されませんでした
1 に答える
3
複数の C ランタイム ライブラリに対して正常に静的にリンクできる可能性はかなり低いです。少なくとも大量の警告を生成する多くのシンボル定義の競合に遭遇し、無謀なエンジニアだけがそれらを無視します。
ではdepends
、動的プロファイリング オプションを使用して、ロードする動的 CRTL のすべての依存関係を確認します。何も表示されない場合は、問題が他にあると思われます。
ただし、C レベルの API を使用する DLL は、原則として、CRTL の共有状態 (最も一般的にはメモリ アロケータ) に依存すべきではなく、標準化されたプロトコルを採用する必要があるため、いずれにしても問題は他の場所にあると思われます。 caller-allocates、callee-uses、またはメモリ割り当てコールバックの受け渡しなどのクロス API メモリ管理。つまり、同じプロセス内の複数の CRTL は、メモリ管理プロトコルの正しい使用により、通常は問題になりません。
一時的な障害の場合、マルチスレッドまたはヒープの破損が疑われます。
于 2009-06-07T07:46:38.780 に答える