私は、ウィンドウ(64ビット)で作業しているプロジェクトの1つにいくつか問題があります。プログラムがクラッシュすることもありますが、時にはそうではありません。問題が複数のリンクされたCランタイムにリンクされていると思われます。ウィンドウでこれをどのように検出できますか? depends.exeを試してみましたが、CRTを報告しませんでした複数のリンクされたCランタイムをウィンドウで検出する
答えて
複数のCランタイムライブラリを静的にリンクすることはできません。多くのシンボル定義の競合が発生し、大量の警告が発生します。無謀な技術者だけがそれらを無視するだろう。
depends
では、動的プロファイルオプションを使用して、ロードする動的CRTLのすべての依存関係を確認します。もし何も起きなければ、私はあなたの問題が他のところにあると思う。
CレベルのAPIを持つDLLは、CRTLの共有状態(通常はメモリアロケータ)に頼ってはならないので、どのような場合でも問題は他のものと思われます。 caller-allocates、callee-use、memory allocation callbackなどのAPI間メモリ管理のための標準化されたプロトコルです。つまり、同じプロセス内の複数のCRTLは通常、メモリ管理プロトコル。
一時的な障害については、マルチスレッドまたはヒープの破損が考えられます。
私は動的プロファイリングオプションを検討します。ありがとう CRLTの共有状態に関して、私はそれについて何もできないと思います。これはPython拡張のためのもので、メモリ割り当て部分(refcounting)では何も制御しません。私は複数のCRTが問題ではないというあなたの主張に驚いています - 私は窓の専門家から遠いですが、かなりの情報源から避けるべきであることを一貫して読んでいます。私はそれが慎重に避けることができると理解していますが、私はそれが最終的な実行可能ファイルのすべての部分を制御しないので、私のケースでは実行可能だとは思わない。 –
ほとんどの場合、WindowsでDLLを使用すると、ソースはなく、使用しているランタイムライブラリを制御することはできません。 GNU CライブラリがあるLinuxのようなものではなく、すべての共有ライブラリは、mallocがプロセス全体で同じアロケータに解決することを(通常)信頼することができます。さらに、DLLは異なる言語で記述することができます。 C EXEで使用されているPascal DLL、またはその逆のDLLは、要件が異なるため、ランタイムライブラリを共有できません。したがって、メモリ管理規約またはプロトコルに従う必要があります。 –
私は最終的にスタックトレースを取得することができました。問題は確かにDLL境界を越えて渡されるFILEです。だから私は何とかしなくてはならないと思う。 Windows上でのdll境界のプロトコルに関する参考資料はありますか?私はこの問題に本当に慣れていません。私が取り組んでいるコードベースのいくつかの場所でそれを処理する必要があるのでしょうか? –
- 1. ウィンドウ外にキーストロークを検出するC++
- 2. リンクされたリストループ検出アルゴリズム
- 3. Android用Xamarinは複数回インストールされたMonoランタイムですか?
- 4. リンクされたリストのループを検出することにフォローアップ
- 5. fk-phpでリンクされた複数の行を挿入する
- 6. ウィンドウで開く複数のリンクと、別のウィンドウ
- 7. 複数のアクティビティにリンクされたカスタムタイトルバー
- 8. 複数のリンクされたリスト
- 9. データがリンクされた複数のXML?
- 10. 単語の複数のインスタンスを1行で検出するC#
- 11. C#色複数の結果の検出
- 12. EMgucvウェブカメラから検出された複数の顔を保存
- 13. Apache Beam - 複数のウィンドウを出力するウィンドウをスライドさせる
- 14. 複数のリストボックスをリンクするC#
- 15. Cでリンクされたリストプログラム
- 16. Cでリンクされたリスト
- 17. ユーザーがカスタムWebKitウィンドウのリンクをクリックしたときに検出する
- 18. 複数のボタンが押されたときの検出
- 19. GDBで複数のリンクされたファイルを使ったデバッグ
- 20. ノードの挿入と検索 - C++でリンクされたリスト
- 21. C#(.net)Windowsサービスで開始されたウィンドウまたはユーザーログインを検出する方法?
- 22. HATEOASハイパーメディアのランタイム検出?
- 23. Azureサービスバスキューの重複検出ウィンドウ
- 24. 警告:複数バージョンのスカラーライブラリが検出されましたか?
- 25. 「複数のGoogle Analyticsタグが検出されました」
- 26. テンプレートマッチングで検出されたオブジェクトの数を数えるには?
- 27. コンパイルとリンクを行った後のランタイム "シンボル検索エラー"
- 28. C#ウェブブラウザで複数のリンクを参照
- 29. VS 2008 - 古いCランタイムとのリンク
- 30. リンクされたSharePointテーブルのコンボボックスで複数の値を選択
クラッシュはどこですか?スタックトレースなどありますか? – Macke
スタックトレースのないCランタイムのどこかに、残念ながら... –