Visual C++ 링킹 에러 정리

출처 : http://aego.pe.kr/MFCErrors.html

LNK1103

uuid.lib(servprov_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module

  • 원인 : MS SDK 버전이 VC 호환을 지원하지 않는 SDK를 설치하고 Directory를 설정해둔 경우
  • 해결 : Directory 순서 조정

LNK4070

/OUT:filename directive in .EXP differs from output filename ‘filename’; ignoring directive

  • 원인 : Link 탭에 설정한 output 이름과 .def 파일내의 output 이름이 다르게 설정
  • 해결 : .exp 파일을 만들 때 NAME 또는 LIBRARY 문에 지정한 filename이 기본적으로 선택되었거나 /OUT 옵션으로 지정한 출력 filename과 다릅니다. 개발 환경에서 출력 파일의 이름을 변경했는데 프로젝트의 def 파일이 업데이트되지 않은 경우 이 경고가 발생합니다. 이 경고를 해결하려면 .def 파일을 수동으로 업데이트하십시오. 결과로 생성된 DLL을 사용하는 클라이언트 프로그램에 문제가 발생할 수 있습니다.
  • .def 파일의 읽기속성을 해제한 후 수동 수정

LNK4088

image being generated due to /FORCE option; image may not run

  • 원인 : Link 탭에 설정한 output 이름과 프로젝트 기본 셋팅 아웃풋과 이름이 다르게 설정된 경우
  • 증상 : Depends.exe를 실행해 해당 모듈의 의존성을 보게 되면 심볼정보들을 제대로 참고하지 못하고 있는 증상을 나타낸다.
  • 해결 : Link 탭의 Link Incrementally 옵션을 체크

MIDL error : ‘annotation’ 에러

  • 증상 : Internet Explorer와 연동되는 레거시 어플리케이션을 비스타에서 지원해주기 위해 ~~ChangeWindowMessageFilter~~ 를 사용해야 하는 경우가 있는데, Vista SDK 의 Path 를 Include Path 로 지정해도 아래와 같은 에러가 뜨는 경우가 있다.
    1>C:\Program Files\Microsoft SDKs\Windows\v6.0\Include\unknwn.idl(108) :
     error MIDL2025 : syntax error : expecting ] or , near "annotation"
    1>C:\Program Files\Microsoft SDKs\Windows\v6.0\Include\unknwn.idl(108) :
     error MIDL2026 : cannot recover from earlier syntax errors; aborting compilation
    
  • 해결 : 이는 최신 MIDL 컴파일러를 지정해 주지 않아서 생기는 에러로, ~~Tools – Options – Projects and Solutions – VC++ Directories – Executable Files~~에 ~~C:\Program Files\Microsoft SDKs\Windows\v6.0\bin~~을 제일 위로 지정해 주면 해결할 수 있다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다