반응형
가끔 개인적으로 stdafx.h 는 골치 아프게 할때가 있습니다..
테스트 코드를 작성해서 시험해보거나, Code generation 툴을 이용해서 만들어진 코드에 작업하는 경우, 그리고 작성된 코드를 visual studio가 아닌,
개발환경( gcc , armcc 등등 ) 에서 cross compile 해야 하는경우 등이 대표적인 예입니다.
visual studio 에서 Win32 Project를 만들었을 경우, stdafx.h 를 없애기 위한 절차는 다음과 같습니다.
1.
프로젝트 프라퍼티( Property) -> C/C++ -> Precompiled Headers
: Create/Use Precompiled Header :Not Using Precompiled Headers 로 변경
2. 각 소스파일에서 include "stdafx.h" 를 없앤다.
3. 이렇게 변경을 하고 나면, 아마 이런 에러가 날것입니다.
unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
이 에러는 WinMain이 없다는 예기인데요.
3. 위와 같은 에러가 발생하면, Main이 들어있는 소스 파일을 확인해보자.
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
Visual studio 에서 사용되는 CRT library가 _tWinMain을 호출하도록 되어있습니다.
그런데 우리가 Precompiled header를 없앴기 때문에, 이제 WinMain을 요구하는 것이죠.
그래서 위의 _tWinMain을 WinMain으로 변경하면 됩니다.
이때 주의 사항은 3번째 파라미터 인 LPSTR lpCmdLine 입니다.
tWinMain에서는 LPSTR로 되어있어서 그냥 이름만 바꾸면 안되고, parameter 타입도 확인하셔야 합니다.
[WinMain 의 prototype]
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) 여기까지 하고 나면 빌드 성공!!!!!
즐거운 프로그래밍 생활 하세요!
'개발 Note > UI Framework 개발하기' 카테고리의 다른 글
Good Language & Good Framework (2): 좋은 언어와 좋은 프래임워크란? (0) | 2016.02.12 |
---|---|
Core Image Concepts (0) | 2011.09.20 |
CoreAnimation in iOS (0) | 2011.07.13 |
key - value 관리 (0) | 2011.06.08 |
[애자일] 릴리즈 계획 과정에서 가장 중요한 것들 (0) | 2010.10.29 |