2013-12-10 3 views
4

라이브러리에 컴파일중인 코드 기반이 있습니다. 일반적으로 도서관을 MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)으로 보내 겠지만 고객이 MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)으로 요청하고 있습니다.lib의 MSC_VER 감지

Visual Studio 2012로 내 Lib의 새 버전을 다운로드하여 설치하고 컴파일했습니다. 이제 lib에 현재 _MSC_VER 버전이 있는지 확인하여 올바른 버전을 보내고 있는지 확인하고 싶습니다.

_MSC_VER가 라이브러리에서 사용되는 것을 어떻게 감지합니까?

+0

.lib의 함수를 사용하는 간단한 테스트 프로그램을 작성하십시오. .lib의 * old * 버전과 링크하여 고객이 얻는 링커 오류가 발생하는지 확인하십시오. 이제 * new * 버전과 링크하여 링커 오류가 발생하지 않는지 확인하십시오. –

+0

@HansPassant 라이브러리의 _MSC_VER를 감지 할 수있는 도구가 있어야합니다. 내 lib에 _MSC_VER를 감지하는 응용 프로그램을 만드는 것은 나에게 해킹처럼 보입니다. –

+0

예, 해당 도구는 "링커"라고합니다. 이것은 오류를 생성하는 것입니다. 정말로 원한다면 notepad.exe를 사용할 수 있습니다. FAILIFMISMATCH를 검색하십시오. 오래된 .lib에서 찾을 수 있습니다. –

답변

3

덤프 빈을 시도 할 수 있습니다.

c:\dev\tagainijisho>dumpbin C:\Qt\5.4\msvc2010_opengl\lib\qtmaind.lib /rawdata | find "_MSC_VER" 
    00000040: 3A 22 5F 4D 53 43 5F 56 45 52 3D 31 36 30 30 22 :"_MSC_VER=1600"