중요 : LNK2001에는 수백만 가지 원인이있을 수 있습니다! http://msdn.microsoft.com/en-us/library/f6xx1b1z%28v=vs.71%29.aspx
다음 가능한 한 검색에 많은 키워드를 포함하는 인식 :
내 솔루션은 특정 경우에 도움이 페이지도를 않는 경우하지 않는 경우
. 내 경우처럼 "LIBCMT.lib LNK2001 _main". 수백만 가지 검색 결과에 익사하는 것을 피하는 것이 중요합니다.
LIBCMT.LIB는 CRT 기능인 memcpy, swprintf 등과 같은 기능을 정의합니다. (C 런타임 라이브러리)
저는이 프로젝트 중 일부를 사용합니다. 그렇다면 왜 디버그 버전 빌드와 릴리스 버전이 아닌가?
원인은 CRT 시작 코드가 EXE 파일, DLL에에서 제외됩니다
프로젝트가 _ATL_MIN_CRT를 정의하는 경우 (일반적으로 _main시)를 한 번 호출해야 시작 코드가의 CRT 라이브러리가 초기화를 필요로한다는 것이다 빌드를 릴리스하여 파일 크기를 줄입니다.
이 알고있는 해결책은 간단하다 :
솔루션 A)이 줄을 넣어 STDAFX.H 파일의 끝에 프로젝트 설정
솔루션 B)에서 제거 _ATL_MIN_CRT :
를
#undef _ATL_MIN_CRT
그게 문제를 해결했습니다.
나는 내 수업의 시작 나는에 넣어 다른 프로젝트에서 내 수업을 재사용으로이 나는 즉시 경고가 표시됩니다 미래에 다른 프로젝트에 내 코드를 재사용하는 것을 보장
#ifdef _ATL_MIN_CRT
#error _ATL_MIN_CRT is not valid for this project
#endif
.
엘름
시도해 보았습니다. –
@ 엘림 - 이걸 Q & self-A 페어로 리팩터링하고, 나는 그것에 대해 upvote를 줄 수 있습니다 ... (심지어 두 개의 upvotes,) – LThode
맞습니다. 나는 그렇게했다. – Elmue