2013-10-21 2 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

또는

/DEFAULTLIB:LIBCMT (모듈로 컴파일 (모듈/MD로 컴파일)/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 : \의 Program Files (x86) \ 마이크로 소프트 비주얼 스튜디오 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 스튜디오 2013 \ Projects \ Win32Project1 \ Debug \ Win32Project1.pch"-Fo "c : \ Users Visual Studio 2013 \ Projects \ Win32Project1 \ Debug \ "-Fd"c : \ Users \ hpass_000 \ documents \ visual 스튜디오 2013 \ Projects \ Win32Project1 \ Debug \ vc120.pdb "-Gd -TP -analyze- errorreport : 프롬프트 -I "C : C : \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ atlmfc \ include "-I"C : \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ include " \ Windows 키트 \ 8.1 \ Include \ um "-I"C : ₩ Program Files (x86) ₩ Windows 키트 ₩ 8.1 ₩ Include ₩ 공유 "-I"C : ₩ Program Files (x86) ₩ Windows 키트 ₩ 8.1 ₩ 포함 ₩ winrt "-X SRC stdafx.cpp PDB C : 당신이 말할 수 \ 사용자 \ 프로젝트 \ Win32Project1 \ 디버그 \의 vc120.pdb \ 비주얼 스튜디오 2013 \ 문서 \

, 나는/MDD

컴파일 hpass_000

.lib에는 설정이 다른 여러 .obj 파일이 포함될 수 있음을 유의하십시오."-mt"및 "-md"를 검색하면 빨리 찾을 수 있습니다.

+0

이것은 굉장합니다! 나는 sysinternal의 "strings.exe"도구로 한 발 앞선 것을 보았습니다. – zenpoy

+12

이게 더 이상 없습니다 .lib, .obj도 .exe도 아닙니다. (즉, protobuf 2.6.1을 VS2013에서 시도하고 있습니다.) –

관련 문제