Loading...

winapi의 오류를 문자열로 출력하기.

win api의 실패시 오류값은 dword. 내부로 들어가보면 알수없는 숫자들이 많다. 이를 문자열로 전화해서 출력하기 위해 GetLastError으로 에러 숫자코드를 받아 FormatMessage를 사용하여 바꾸어 준다. #include void PrintError(DWORD dwErrorNo); ... void PrintError(DWORD dwErrorNo) { LPVOID lpMsgBuf; if (!FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwErrorNo, MAKELANGID(LANG_NEUTRAL, SUBLAN..

DebugBreak 및 __debugbreak

msdn : http://msdn.microsoft.com/en-us/library/f408b4et.aspx 코드의 어떤 위치에서든 DebugBreak Win32 함수 또는 __debugbreak 내장 함수를 호출할 수 있습니다. DebugBreak 및 __debugbreak는 해당 위치에 중단점을 설정한 것과 같은 효과가 있습니다. DebugBreak는 시스템 함수에 대한 호출이므로 중단 후 올바른 호출 스택 정보가 표시되도록 하려면 시스템 디버그 기호를 설치해야 합니다. 그렇지 않으면 디버거에서 표시하는 호출 스택 정보가 한 프레임 정도 차이가 납니다. __debugbreak를 사용하는 경우에는 기호가 필요하지 않습니다. DebugBreak and __debugbreak 윈도우에서 제공하는 break..

가변 인수를 가지는 함수 및 매크로 만들기

출처 : http://uuzazuk9.egloos.com/906491 ANSI C 버전 ================================================================================ #include #include int average(int first, ...); void main( void ) { /* Call with 3 integers (-1 is used as terminator). */ printf("Average is: %dn", average(2, 3, 4, -1)); /* Call with 4 integers. */ printf("Average is: %dn", average(5, 7, 9, 11, -1)); /* Call with jus..

/DYNAMICBASE(주소 공간 레이아웃을 임의로 지정)

msdn : http://msdn.microsoft.com/ko-kr/library/bb384887.aspx 로드할 때 Windows Vist의 ASLR(Address Space Layout Randomization) 기능을 사용하여 임의로 기준 주소를 지정할 수 있는 실행 가능 이미지를 생성할지 여부를 지정합니다. /DYNAMICBASE[:NO] 설명 이 옵션은 실행 파일의 헤더를 수정하여 로드 시 응용 프로그램의 주소가 임의로 지정되어야 하는지를 나타냅니다. ASLR(Address Space Layout Randomization)은 Windows Vista 이상의 운영 체제에서만 지원됩니다. Visual Studio 개발 환경에서 이 링커 옵션을 설정하려면 프로젝트의 속성 페이지 대화 상자를 엽니다...

c++ 생각하기 2.

1. 컴파일러가 스스로 하는 암시적인 타입변환. 단일인자 생성자를 통한 암시적 타입변환..... 이녀석의 때문에 생기는 버그는 찾기 어렵다. 미리미리 조심해야지. 단일인자 생성자의 경우에는 explicit 키워드를 사용하자. 하지만 이렇게 해도 명시적인 타입변환은 여전히 허용된다. 명시적인 타입변환까지 막을 필요가 있을까... 말그대로 사용자가 필요해서 대놓고 한다는데. 문제는 몰래하는 암시적변환이지만.... 또다른 방법으로는 컴파일러의 암시적 타입변환의 규칙을 교묘히 피해나가는 것이다. 즉, 컴파일러의 암시적 타입변환 규칙에 어긋나게 만드는 것이다. "사용자 정의 타입변환 함수는 두개 이상 쓰이지 않는다." 라는 것이 있다. 그래서 클래스만 잘 만들어 놓으면 객체생성은 허용하지만 암시적 타입변환은 불가..

freetype font

ㅇㅇ~ winapi 사이트 역시 쩌는군. freetype library 쓸려고 영문사이트에서 이리저리 보고 짯는데 이곳에 이미 체계적으로 잘 설명해 놓은 한글 메뉴얼이 있네...헐.. http://www.winapi.co.kr/ 프로젝트 - 라이브러리 - freetype font home site : http://freetype.sourceforge.net/index2.html

빌드 자동화

출처 : http://www.hybrid.pe.kr/tt/384#footnote_link_384_1 조엘 온 소프트웨어(영어 링크, 한국어 링크) 에 일별 빌드에 대한 좋은 글이 있다. 글의 제목은 '일별 빌드(Daily Builds)가 당신 곁에 있습니다(한국어판).' 으로, 여기서는 매일 빌드 하는 강조하지만, 나는 그것보다 작은 단위로, 그냥 일괄적으로 빌드 하는 것에 대해서 정리해보려고 한다. 더 많은 방법이 있고, 더 효율적인 방법도 많을 것이다. 일단 시작은 Batch 파일부터 시작하기로 했다. Bach 파일 작성에 관한 참고 문헌 mwultong Blog - 배치파일(.BAT) IF 조건문 사용법 기초 강좌; DOS Batch File IF자동화 빌드에 대한 참고 문헌 : Games from..

dllimport, dllexport

exports library file(.exp), object file library(.lib) 참조 : msdn http://msdn.microsoft.com/ko-kr/library/se8y7dcs(VS.80).aspx .exp파일에는 export된 함수와 데이터 항목에 대한 정보가 들어있다. .lib에는 export할 함수를 만들때 .exp파일도 함께 만든다. 다른 프로그램으로 export 하거나 import하기도 하는 프로그램을 직접 또는 간접적으로 링크하고자 할 때 이 .exp 파일을 사용한다. .exp 파일을 사용하여 링크하면 link에서는 import 라이브러리를 이미 만들었다고 가정하기 때문에 다시 만들지 않는다. 이 파일들을 만드는 방법은 간단하다. #ifdef MGSYSTEM_EXPOR..