error LNK2001: unresolved external symbol _main
ATL COM Project를 빌드할 때 아래와 같은 LNK2001 에러가 발생하는 경우가 자주 있다.
Linking...
Creating library ReleaseMinSize/funcbridge.lib and object ReleaseMinSize/funcbridge.exp
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
../bin/funcbridge.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
이 링크 에러를 제거하려면 프로젝트 설정에서 _ATL_MIN_CRT 심벌을 없애야한다. 심벌의 이름으로 그 기능을 유추하면 C run-time library를 최소로 사용하게 하는 모드로 생각하기 쉽지만, 사실 이 심벌이 정의되면 CRT 시작 코드가 링크되는 것을 아예 막아버린다. 이렇게되면 약 25Kb가 절약되는데 CRT를 쓰는 프로젝트에서는 절약이고 뭐고 링크 자체가 안되므로 이 심벌을 제거해야 하는 것이다.
_ATL_MIN_CRT 심벌을 없애는 방법은 다음과 같다. Project Settings 윈도우를 표시하고 Settings For: 콤보 박스에서 Multiple Configurations 항목을 선택한다.
표시된 윈도우에서 Debug 항목을 제외하고 Release 빌드는 모두 선택한 후 OK 버튼을 누른다.
Project Settings 윈도우의 C/C++ 탭을 선택한 후, Category 콤보 박스에서 Preprocessor 항목을 선택하고 Preprocessor definitions: 항목에서 ATL_MIN_CRT 심벌을 삭제한다.
[출처] error LNK2001: unresolved external symbol _main|작성자 삐삐러브
'개발언어 > c++' 카테고리의 다른 글
MDI(Multi Document Interface)로 개발하기1 (0) | 2016.07.18 |
---|---|
LNK2005 _DllGetClassObjec,already defined in AtlTest.obj (0) | 2016.07.18 |
CoInitialize의 기능 (0) | 2016.07.18 |
ATL, _com_error 클래스와 HRESULT 에러 처리,error (0) | 2016.07.18 |
VB에서 VC++ 상속 받기 혹은 추상화 하기 (0) | 2016.07.18 |