2012-05-04 6 views
1

主題は - MSVCRTのデバッグバージョンに対して.lib静的ライブラリ(および可能であればダイナミックライブラリも)が構築されているかどうかを検出する信頼できる方法はありますか?例えば。それを検出するために使用できるインポートシンボルはありますか? 基本的には、たくさんの依存関係の静的ライブラリを使用するアプリケーションがあります。少なくとも1つにデバッグmsvcrtが必要です。なぜなら結果の実行可能ファイルには両方のバージョンのランタイムが必要だからです。.libがデバッグに対してビルドされているかどうかを検出するMSVCRT

答えて

2

は、Dependency Walkerに依存します.dllがMSVCRxxD.DLLに依存する場合は、 は、デバッグ実行時にリンクされています。 詳細については、Use Run-Time Libraryを参照してください。

あなたはcygwinのを持っている場合は、たとえばxxx.lib

文字列を実行することができます| grepのMSVCRT

または

文字列xxx.dll | grepのMSVCRT

とDバージョンが応答のための

+0

感謝を見えるかどうかを確認には、あなたの答えは正しいですが、私はいくつかのより多くの調査が必要になりますことを見出しました。実際には、デバッグcrtから実行可能なアプリケーションによってインポートされたシンボルを取得しました。特有のものは_CrtDbgReportWです。私はobjdump -pでそれらを手に入れ、どんなdllがインポートされているかを見いだした。しかし、誰がそれらをインポートしたのですか? - 私は多くのlibsをリンクしていて、objdumpでそれらを1つずつチェックしました。-t全てに_CrtDbgReportWのインポートはありません。どのように私はCRTをデバッグするwhtオブジェクト/ libのリンクを見つけることができる任意のアイデア? –

+0

多分これは助けるhttp://stackoverflow.com/a/2225982/1273776 – Marius

+0

それに釘付け!特定のcrtバージョンをターゲットとするときにNODEFAULTLIBの組み合わせを使用した表が本当に役立ちました。http://msdn.microsoft.com/en-us/library/aa267384%28VS.60%29.aspxもう一度おねがいします。あなたは私からの仮想ビールを1つ持っています! –

関連する問題