2013-10-21 90 views
18

給定一個編譯lib,有沒有辦法通過查看它(也許用dumpbin工具)來判斷它是否與/md/mt編譯?如何判斷一個lib是使用/ mt還是/ md編譯的?

編輯: dumpbin /directives foo.lib是對於其中lib不與/GL開關編譯的情況下的解決方案。有沒有選擇檢查以這種方式優化的lib文件?

+0

你可以改變接受的答案,因爲它不再工作,並且票數少於下面的答案嗎? –

回答

24

是的,你可以使用DUMPBIN的/DIRECTIVES選項查找其運行時庫中的.lib的對象要與鏈接:

dumpbin /directives foo.lib 

查找運行時庫的情況下,指定here。例如,你可能會看到:

/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」。

例如,這是我看到的時候我用記事本打開名爲Win32Project1.lib樣本庫,我用VS2013建:

C:\ Program Files文件(x86)的\微軟的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:precise -Zc:wchar_t -Zc:forScope -Ycstdafx.h -Fp「c:\ Users \ hpass_000 \ documents \ visual studio 2013 \ Projects \ Win32Project1 \ Debug \ Win32Project1.pch」-Fo「c:\ Users \ Hpass_000 \ documents \ visual studio 2013 \ Projects \ Win32Project1 \ Debug \「-Fd」c:\ Users \ hpass_000 \ documents \ visual studio 2013 \ Projects \ Win32Project1 \ Debug \ vc120.pdb「-Gd -TP -analyze- - 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 \ include「-I」 \ Windows \ Kits \ 8.1 \ Include \ um「-I」C:\ Program Files(x86)\ Windows Kits \ 8.1 \ Include \ shared「-I」C:\ Program Files(x86)\ Windows Kits \ 8.1 \ Include \ WinRT的」 -X SRC stdafx.cpp PDB C:\用戶\ hpass_000 \文件\的Visual Studio 2013 \項目\ Win32Project1 \調試\ vc120.pdb

正如你所知道的,我用/ MDD

編譯

請小心.lib可以包含多個可能具有不同設置的.obj文件。搜索「-mt」和「-md」可以讓您快速找到答案。

+0

這太棒了!我用sysinternal的「strings.exe」工具提前一步 – zenpoy

+12

這似乎不再是真實的了,.lib,.obj和.exe都沒有(即在VS2013中嘗試protobuf 2.6.1) –

相關問題