2006년 1월 24일 화요일

Visual Studio .NET 2003 컴파일에러

. 증상
fatal error C1010: unexpected end of file while looking for precompiled header directive

. 원인
MFC는 .cpp파일에 #include "stdafx.h"가 없으면 에러를 낸다.
compile file을 줄이기 위해 precompiled header라는 방법을 쓰기 때문이다.

. 해결방안 1
에러가 나는 .cpp파일의 첫 줄에
#include "stdafx.h"
를 추가한다.

. 해결방안 2
Project -> property -> C/C++ -> Precompiled Header
-> Create/Use Precompiled Header
-> Not using precompiled header
. 참고
http://www.msoe.edu/eecs/cese/resources/cppbuild/msvcmfc/mfc_err.htm

. 증상
LIBCD.lib의 _tolower 등 여러 함수가 중복선언되어 있다고 에러가 날때

. 해결방안
  속성 -> 구성속성 -> 링커 -> 입력 -> 특정 라이브러리 무시에
  LIBCD.lib을 적는 다.

문제)
. __malloc_dbg 외부 기호를 확인할 수 없습니다.

해결책)
링커 -> 추가종속성 -> msvcrtd.lib 추가 (debug일 때)
링커 -> 추가종속성 -> msvcrt.lib 추가 (release일 때)

문제)
. msvcrtd.lib에 관한 에러가 날때

해결책)
속성 -> 구성 속성 -> C/C++ -> 코드생성 -> 런타임 라이브러리 에서
현재 단일 쓰레드 모드 인지, 멀티 쓰레드 모드인지 알아본다.
(msvcrtd.lib가 모드에 따라 다르다.)

문제)
_errno 등에 관한 에러가 계속 날 때

해결책)
속성 -> 구성 속성 -> 링커 -> 입력 -> 특정 라이브러리 무시 -> libcmtd.lib

댓글 없음:

댓글 쓰기