2013-10-21 5 views
18

libがコンパイルされていると、/mdまたは/mtでコンパイルされているかどうかを調べる方法がありますか(おそらくdumpbinツールを使用)?libが/ mtまたは/ mdでコンパイルされたかどうかを確認するには?

編集: dumpbin /directives foo.liblib/GLスイッチでコンパイルされなかった場合のためのソリューションです。このように最適化されたlibファイルを検査するオプションはありますか?ランタイムライブラリのインスタンスの

dumpbin /directives foo.lib 

ルックhereを指定:

+0

受け入れられた回答は、それ以上働かず、下位の投票よりも票数が少ないので、変更できますか? –

答えて

24

はい、あなたは.LIB内のオブジェクトはとリンクしたいライブラリどのランタイム見つけること/DIRECTIVESオプションをDUMPBINの使用することができます。たとえば、次のように表示されます:

/DEFAULTLIB:MSVCRTD(/ MDDでコンパイルされたモジュール)

でコンパイルさ

または

/DEFAULTLIB:MSVCRT(/ MDでコンパイルされたモジュール)

または

/DEFAULTLIB:LIBCMT(モジュールを/ MT)

多くの場合、/DEFAULTLIBというディレクティブがあります

dumpbin /DIRECTIVES foo.lib | find /i "msvcr" 

これはあなたが正しいトラックであなたを得ることを望みます。

+0

'/ DEFAULTLIB'はリンカのスイッチです - どうすれば' dumpbin'で出力できますか? – zenpoy

+0

/DEFAULTLIB:MSVCRTDは、Chrisが述べたようにdumpbinの出力例です。これはリンカ指令です。 – ExpatEgghead

13

Microsoftコンパイラの非常に優れた機能は、ソースファイルを.objファイルにコンパイルするために使用されたコマンドラインを保持することです。これは、を待って.libファイルを見て、それを見つけることを可能にします。、Notepad.exe。単に "cl.exe"を検索してください。

例えば

が、これは私がVS2013で構築されたWin32Project1.libという名前のサンプルライブラリを開いてメモ帳を使用するときに私が見たものである。

C:\プログラムファイル(x86の)\のMicrosoft Visual Studioの12.0 \ VC \ bin \ CL.exe cmd -c -ZI -nologo -W3 -WX- -sdl -Od -Oy- -DWIN32 -D_DEBUG -D_LIB -DHELLO_STACKOVERFLOW -D_UNICODE -DUNICODE -Gm -EHs -EHc -RTC1 -Mdd - GS -fp:正確な-Zc:wchar_t -Zc:forScope -Ycstdafx.h -Fp "c:¥Users¥hpass_000¥documents¥visual studio 2013¥Projects¥Win32Project1¥Debug¥Win32Project1.pch" -Fo "c:¥Users Visual Studio 2005 \ Projects \ Win32Project1 \ Debug \ vc120.pdb "-Gd -TP -analyze- \ Visual Studio 2005 \ Projects \ Win32Project1 \ Debug \" -Fd "c:\ Users \ hpass_000 \ errorreport:プロンプト-I "C: \ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ include "-I" C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ atlmfc \ \ Windowsキット\ 8.1 \ Include \ um "-I" C:¥Program Files(x86)¥Windowsキット¥8.1¥インクルード¥共有 "-I" C:¥Program Files(x86) WinRTの」-X SRC stdafx.cpp PDB C:あなたが言うことができるように\ Users \ユーザープロジェクト\ Win32Project1 \デバッグ\のvc120.pdb \ Visual Studioの2013 \ドキュメント\

、私は/ MDD

でコンパイルさhpass_000

.libには、おそらく異なる設定の複数の.objファイルが含まれることに注意してください。"-mt"と "-md"を検索すると、すぐに見つけ出すことができます。

+0

これは素晴らしいです!私はそれをsysinternalの "strings.exe"ツールで一歩前にしました – zenpoy

+12

これはもはや真実ではなく、.lib、.obj、.exe(すなわち、VS2013でprotobuf 2.6.1を試しています) –

関連する問題