2014년 4월 22일 화요일
[VS2010] warning MSB8012
풀 경고 메세지는
warning MSB8012: TargetExt(.dll)이(가) Linker의 OutputFile 속성 값(....)과 일치하지 않습니다. 이를 수정하려면 $(OutDir), $(TargetName) 및 $(TargetExt) 속성 값이 %(Lib.OutputFile)에 지정된 값과 일치해야 합니다.
여기서 (....) 은 (.ocx) (.dll) 일 수 있다.
보통 VC6 에서 개발된 것을 VS2010 컴파일 할때 나는 warning 이다.
MSB8012 이 발생하는 이유
: Link.OutputFile 은 등록정보의 링커 -> 일반 -> 출력 파일 에 선언된 값으로 기본값으로 이 값은 $(TargetPath) 와 같은 $(OutDir)$(TargetName)$(TargetExt)이다. 그러나 이전버전에서 어플리케이션을 변환할 때 다른 고객들은 다른 방법으로 형식화된 값들을 가지고 있을 수 있기때문에, 변환을 위해 $(TargetName) 과 $(TargetExt) 가 가르키는 정확한 값을 밝힐 수 있도록 Link.OutputFile 을 분석할 수 있는 쉬운 방법이 없었음. 이 문제를 해결하기위해 MS는 변환을 하는동안 Linker.OutputFile 값을 보존하기로 결정한다.
: 변환후에 $(TargetName) 은 기본값으로 $(ProjectName) 으로 설정된다. $(TargetExt) 는 각 어플리케이션 형식에 맞는 기본값을 가짐. 즉 동적 라이브러리 *.dll, 정적 라이브러리 *.lib, 어플리케이션 *.exe과 같으며, Link.OutputFile 값은 그대로 보존된다. 이 때, Link.OutputFile 과 $(TargetPath) 가 같지 않으면 변환 로그에 경고 MSB8012 가 발생하게 된다.
MSB8012 은 아래와 같이 하면 해결될 수 있다.
먼저 프로젝트 ->속성 에서 링커 -> 일반 -> 출력 파일 을 확인 하여 출력파일 과 확장명이 뭔지 확인한다.
: $(OutDir), $(TargetName) 과 $(TargetExt) 는 "일반" 등록정보 페이지에서 "출력 디렉토리", "대상 이름", "대상 확장명" 로 확인할 수 있다. 위 출력파일과 다르다면 같게 수정하여 컴파일 해본다.
그럼 잘 된다..^^
출처: http://www.isfull.com/bbs/board.php?bo_table=tb01&wr_id=19