VC에서 자체 프로젝트에 대한 엔트리 포인트 지정
Tuesday, 11. July 2006, 04:50:15
note
외부 기호 오류 해결:main,_WinMain@16,__beginthreadex
MFC 프로젝트를 만들 때 MFC AppWizard 마법사를 사용하지 않고 프로젝트 매개 변수를 설정하지 않으면 컴파일할 때 많은 연결 오류가 발생합니다. 예를 들어 error LNK2001 오류입니다. 전형적인 오류 힌트는 다음과 같습니다.
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
1. Windows 서브시스템 설정 오류, 프롬프트:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Windows 프로젝트는 Console 대신 Windows 서브시스템을 사용하도록 설정할 수 있습니다.
[Project] --> [settings] --> [Link] 등록 정보 페이지를 선택합니다.
프로젝트 옵션에서/subsystem:console를/subsystem:windows로 변경
2. Console 서브시스템 설정 오류, 프롬프트:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
콘솔 항목은 Windows 대신 Console 서브시스템을 사용하려면 다음을 설정합니다.
[Project] --> [settings] --> [Link] 등록 정보 페이지를 선택합니다.
프로젝트 옵션에서/subsystem: 윈도우즈를/subsystem:console로 변경
3. 프로그램 포털 설정 오류, 프롬프트:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
일반적으로 MFC 프로젝트의 프로그램 입구 함수는 WinMain입니다. 프로젝트의 유니코드 버전을 컴파일하려면 프로그램 입구가 wWinMainCRTstartup으로 바뀌어야 하기 때문에 프로그램 입구를 다시 설정해야 합니다.
[Project] --> [settings] --> [Link] 등록 정보 페이지를 선택합니다.
Category에서 Output을 선택합니다.
Entry-point symbol에 wWinMainCRTstartup을 입력하면 됩니다.
이 문제는 Fox toolkit을 사용하여 인터페이스 프로그램을 개발할 때 프로그램이 실행될 때 그 뒤에 항상 Console 창이 나타납니다.포털을 지정한 후 다음과 같이 Console 창이 나타나지 않도록 설정할 수 있습니다.
comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib mpr.lib FOX-1.6.lib/entry:"mainCRTStartup"/subsystem:windows/profile/machine:I386/out:"Debug/a.exe"
4. 스레드 런타임 라이브러리 설정 오류, 프롬프트:
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
MFC에서 멀티스레드 라이브러리를 사용하려면 다음 설정을 변경해야 하기 때문입니다.
[Project] --> [settings] --> [C/C++] 속성 페이지를 선택합니다.
Category에서 Code Generation을 선택합니다.
Use run-time library에서 Debug Multithreaded 또는 multithreaded 선택
여기서,
Single-Threaded 단일 스레드 정적 링크 라이브러리(release 버전)
멀티스레드 정적 링크 라이브러리(release 버전)
multithreaded DLL 다중 스레드 동적 링크 라이브러리(release 버전)
Debug Single-Threaded 단일 스레드 정적 링크 라이브러리(debug 버전)
Debug Multithreaded 다중 스레드 정적 링크 라이브러리(debug 버전)
Debug Multithreaded DLL 다중 스레드 동적 링크 라이브러리(debug 버전)
단일 스레드: 다중 스레드 호출이 필요 없는 경우 DOS 환경에서 사용
다중 스레드: 동시 실행 가능
정적 라이브러리: 라이브러리를 프로그램 링크에 직접 연결하여 MFC 라이브러리에서 실행할 수 있음
동적 라이브러리: 프로그램을 실행하려면 적절한 DLL 동적 라이브러리가 필요합니다.
release 버전: 정식 출시 시 사용
debug 버전: 디버그 단계 사용
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 다중 스레드를 순차적으로 실행하는 몇 가지 방법 요약Java 다중 스레드를 순차적으로 실행하는 몇 가지 방법 요약 동료는 무심결에 이 문제를 제기하고 두 가지 방법을 직접 실천했다.물론 더 좋은 방법이 있을 거야. 방법 1 이런 방법은 비교적 흔히 볼 수 있는 해결 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.