햄버거 가게에서 일하는 것을 수치스럽게 생각하지 마라. 너희 할아버지는 그 일을 기회라고 생각하였다.
[[Include(분류/win32)]]
1 news #
MinGW 4.0 snapshot이 나왔네요. 스냅샷, 안정버전등을 선택할 수 있도록 한듯. 아직 gcc4는 배포되지 않은것 같습니다.
- MinGW 3.2.0 rc2 배포본이 발표되었습니다. 이전의 stat()관련 버그 고친 w32 로 교체했네요.
여기에서 받을 수 있습니다. 3.2.0 배포본에 있는 gcc 3.4.2 버전은 매우 안정적으로 보입니다.
2 링크 #
http://www.mingw.org/ - mingw 사이트.
http://sourceforge.net/project/showfiles.php?group_id=2435 - 다운로드 링크. 별도의 홈페이지에서도 관리하고 있지만 업데이트가 느린듯. 여기가 좋다.
http://radasm.visualassembler.com/projects/ResEd.zip - win32용 리소스 화일(rc화일) 에디터. 대화상자편집도 가능.
http://the-agency.sourceforge.net/xoops/modules/mydownloads/singlefile.php?cid=26&lid=61 - agency라고하는 별도 프로젝트에서 배포하는 MinGW 배포본. 후보자 화일들을 기준으로 모은 듯. 따로 받아서 까는거보다 편하다.
http://www.spacejack.org/games/mingw/ - mingw 시작 가이드 문서. mingw을 Directx와 SDL과 같이 사용하는 방법을 알려주고 있다.
DebugView - gcc/mingw로 작업을 하다보면 VC처럼 OutputDebugString()출력을 받을 수 있으면 편할 때가 있습니다. 이것을 사용하면 VC를 띄우지 않아도 OutputDebugString() 출력을 캡쳐해주므로 디버그할때 매우 유용합니다.
ftp://ftp.johngaughan.net/pub/directx/ - mingw용 direcx9 SDK.
3 다른 공개 컴파일러 & 링커 #
http://msdn.microsoft.com/visualc/vctoolkit2003/ - MS에서 배포하는 컴파일러 패키지. 정말로 컴파일러와 링커, 표준 C++ 헤더화일, 필수 lib들만 있습니다. 제대로된 win32코딩을 하려면 플렛폼 SDK와 .net 프레임워크 SDK를 설치해야 합니다.
- NMAKE, 리소스 컴파일러, IDL 모두 없습니다.
이것과 플렛폼 SDK를 설치하면 core win32 어플리케이션만을 만들수 있습니다. 결론은 현실적으로 VC를 구매하여야한다는...
- NMAKE, 리소스 컴파일러, IDL 모두 없습니다.
4.1 이클립스/CDT #
- eclipse에서 나온 C/C++ IDE. 2.0입니다.
http://www.eclipse.org/cdt/ - 메인링크.
http://eclipse-wiki.info/CDT - 이클립스 위키에서의 CDT 부분.
4.2 dev-C++ #
- 델파이로 만든 mingw IDE입니다. 깔끔하고 뭐니뭐니해도 공짜라는 점이 장점.
- 현재 4.9.9.1 버전이 발표되었습니다. mingw/gcc 3.3.1을 사용하는 것이 특징.
http://www.bloodshed.net/dev/devcpp.html - dev-c++. mingw를 기반으로 하는 공개 C/C++ IDE.
DevCpp - GpGiki의 Dev-c++에 대한 소개 및 글이 있는 곳.
DevCppTutorial - Dev-c++ 튜토리얼.
http://kldp.net/projects/devckorcomm/ - kldp.net에 위치한 dev-c++ 한글화 프로젝트.
- devcpp/별도설치한mingw사용하도록설정하기 - ACE를 컴파일하는 중에 dev-c++에 내장된 mingw배포본이 좀 구버전인 까닭에 컴파일이 안되는 일이 있었습니다. 이를 계기로 적어봅니다.
4.3 relo #
- dev-c++보다는 못하지만, 폴딩기능과 같이 아주 기본적인 기능의 IDE를 원하면 사용해도 될 듯....
- 플러그인 방식은 아니더군요. 그런점이 실망. 공개입니다.
http://www.fifsoft.com/relo/ - 공식 홈페이지.
5 아티클 #
PortingToDevCpp - dev-c++으로 포팅할 때의 내용들을 적어둔 글 입니다. (류광님 수고하십니다.
)
- VC용 lib화일을 mingw용 라이브러리로 변환하기 - 상당히 쓸만한 내용이라 나름대로 정리해보았습니다.
http://wiki.kldp.org/wiki.php/UnixPlatformForWin32 - MinGW를 비롯한 기타 다른 Win32상에서의 UNIX 툴들을 모아놓은 글입니다. MS의 윈도우 서비스가 인상적이네요.
6 팁 #
- gcc 옵션 설명요약
- mingw로 컴파일한 DLL을 다시 VC에서 쓰고자할 때가 있었습니다. 이럴 때는 이렇게 하면 됩니다. VC에 보면 'LIB'라는 툴이 있습니다. 이것과 DEF화일을 사용하면 됩니다. (DEF화일을 만들려면 pexports 툴을 쓰면 됩니다. VC용 lib화일을 mingw용 라이브러리로 변환하기 참조. mingw/gcc에서 생성한 def화일은 안됩니다.)
LIB /MACHINE:i386 /DEF:def화일명
이렇게 하면 lib화일이 생성됩니다. LIB 툴이 실행이 안되면 VC설치 디렉토리의 BIN/VCVARS32.BAT을 실행시켜서 경로를 맞춰주는 게 좋습니다. - mingw로 빌드한 실행화일은 통상적 -g 옵션을 빼고 빌드해도 꽤 사이즈가 큽니다. 릴리스 빌드후 실행화일 크기를 줄이고 역컴파일을 막으려면 다음과 같이 msys상에서 실행해주면 됩니다.
strip 실행화일명
추가로 upx같은 툴을 사용하여 실행화일 압축을 해주는 것도 좋습니다. (거의 20~25%크기로 작아집니다)
- #define 문에서 매크로 매개변수명을 문자열로 넣고 싶을 때가 있습니다. (예를 들면 옵션명 같은거 출력하고 싶을때) 이때 # 연산자를 쓰면 되더군요. (stringizing 연산자라고 하는군요
) 예를 들면 다음과 같습니다.
#define Str(x) #x #define OPTION_1 0 #define OPTION_2 1 ... printf("option name: %s=n", Str(OPTION_1));다음과 같이 출력됩니다.option name: OPTION_1
매크로가 원래 지닌 뜻으로 확장되길 원한다면 다음과 갈이 두 단계를 거쳐서 쓸 수 있습니다. (이 부분은 GNU QA에서 퍼왔습니다)#define Str(x) #x #define Xstr(x) Str(x) #define OP plus char *opname = Xstr(OP);
이 코드는 opname을 OP으로 설정하지 않고, plus으로 설정합니다.








