본문 바로가기

C/C++

[C++ 리플렉션] RuntimeClass 란... RuntimeClass [1]에서 퍼온 내용최근에 Open Platform으로 갖춰야 할것 중 하나가 개발 툴인데,IDE같은 개발 툴들은 대부분 Import, Plug-in, User Defined Control(ActiveX control) 등과 같이, System이 개발 된 당시에는 존제하지 않았던 class 나 객체들을 자연스럽게 설치, 추가하여 사용할 수 있도록 해주는 부분들이 매우 많은 범위에 존재한다.이때 framework 구현부는 실제 class의 실체를 모른 상태에서 runtime시에 binding 되는 class의 객체를 생성해야 할 때가 있다. class의 인스턴스 생성방법은 다들 알다시피 new를 통해 생성한다. BaseClass * pInstance = new SubClass; 바꾸.. 더보기
[C/Python] Embeddng Python in C/C++ (C/C++에서 파이선 사용하기) (1) Embedding Python in C/C++: Part I 살다보면 C언어에서 Python을 사용할 일이 있을 겁니다. :)파이선 라이브러리를 받아서 설정 하는 일련의 작업들은 모두 스킵하고...(간단히 언급하면, python의 include, lib폴더를 각각 추가해주고 #include 하면 끝) [2]에 따르면, 아래와 같이 처리를 안해주면 Visual C++ 에서 인식하지 못할 때가있다고 합니다.(직접 해보지 않아서 잘 모르겟음) #include #ifdef _DEBUG #undef _DEBUG #include #define _DEBUG#else #include #endif 1. simple 소스 (no parameters)> 아래의 코드는 Python 모듈의 함수를 호출하는 코드입니다.call_.. 더보기
[펌] Visual Studio의 nmake Visual Studio의 nmake 무작정 퍼옴.... 투박한 텍스트 위주의 화면으로 개발하는 이미지가 강한 GNU 개발툴에 비해, Visual Studio는 화려한 UI 이미지가 강하다. 데이터 스트림이라는 은유적인 개념으로 작은 프로그램들이 협력하는 유닉스 스타일의 GNU 개발툴들은, 그 논리성을 충분히 이해하고 있다면 실로 막강한 개발 환경을 구축할 수 있다. 이런 자유스러운 문화에 푹 젖은 프로그래머들은, Visual Studio를 WYSIAYG(What You See Is All You Get)이라며 비웃지만, 사실 Visual Studio는 UI 지상주의로 설계된 소프트웨어가 아니다. Visual Studio를 마우스가 없으면 아예 동작하지 않는 것으로 생각하는 프로그래머들이 많지만, 사실 .. 더보기
가상 함수 / 순수 가상 함수/ 비가상 함수 이 글은 'Effective C++'의 항목34의 내용 입니다.(항목 34: 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자)글쓰는 스타일도 베껴 왔습니다. 가상함수 / 순수 가상 함수 / 비가상 함수 (public) 상속이란 개념은 두가지로 나뉩니다.함수 인터페이스 상속과 함수 구현의 상속입니다. 클래스 설계할때, 다음의 경우가 있을 거에요 - 멤버 함수의 인터페이스(선언)만 파생 클래스에서 상속받고 싶을때 - 함수의 인터페이스 및 구현 모두 상속 받고, 그 상속받은 구현이 오버라이드 가능하게 하고 싶을때 - 인터페이스와 구현을 상속받되 어떤 것도 오버라이드할 수 없도록 막고 싶을 때 예제를 보면서 몸으로 느껴는게 중요합니다.그래픽 응용프로그램에 쓰이는 도형을 나타내는 클래스 구조를 생각.. 더보기
Visual Studio 와 배포 Visual Studio 와 배포에 관한여... "응용프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지 못했습니다. 이 문제를 해결하려면 응용 프로그램을 다시 설치하십시오"와 같은 문제가 있다면? V isual c++ 2005부터는 배포 하기 위해 상당히 귀찮은 작업이 필요하다.아래에 자세한 설명이 있으니 참고. 1 . Visual Studio 2005/2008 개발한 app 배포하기 : http://serious-code.net/moin.cgi/RedistributingVisualCppRunTimeLibrary : http://blogs.msdn.com/b/vcblog/archive/2007/10/12/how-to-redistribute-the-visual-c-libraries-with.. 더보기
Window 7에서 iis 설정 관련 (HTTP 오류 404.3 - Not Found) Window 7에서 iis 설치후HTTP 오류 404.3 - Not Found 문제 :1. Windows7 에서 iis 설치후 .xml 파일은 로딩이 되지만, 임의의 확장자(ex, .ui, xzy,...)는 Page Not Found !!!즉, well-known 확장자는 웹브라우저에서 잘 열리지만,처음 보는 확장자는 열리질 않는다.(.ui, .py, .ias등 아래의 방법대로 추가해 줘야 한다) 2. 에러 메시지 (브라우저에서 아래와 같은 정보를 알아서 제공해준다.) 이리저리 검색사이트를 뒤졌지만, 결국은 아래와 같이 해주면 해결 된다 -_- >> 다음 구문을 사용하여 MIME 형식 설정 (.ui를 브라우저가 읽을 수 있게 MIME type을 'text/pain'로 설정 %SystemRoot%\wind.. 더보기
[winapi] DC에 대해서...(GetDC / BeginPaint) ### DC (Device Context) ### ** DC란?cairo로 windows에 그림을 그릴때도 Windows DC가 필요하다.때문에 WinAPI의 DC에 대해서 알 필요가 있다. # 기초부터 짚고 넘어가보자Windows는 3개의 DLL(동적 연결 라이브러리)로 구성되어 있다. - KERNEL : 메모리 관리 및 프로그램 실행 - USER : 유저 인터페이스와 윈도우 관리 - GDI : 화면 처리와 그래픽 담당 Windows API 함수 대부분은 이 세가지 DLL에 의해 제공되는 것이다. 즉, Windows의 클라이언트 영역에 그리기를 하려면 이 GDI(Graphics Device Interface) 함수를 사용해야 한다.그리고 HDC는 'Handle to a Device Context' 로 .. 더보기
TRACE 이야기 아래의 링크에 정리가 너무 잘되어 있어 링크만 겁니다. 1. 첫번째 이야기 2. 두번째 이야기 3. 세번째 이야기 4. 네번째 이야기 5. 다섯번째 이야기 6. 여섯번째 이야기 7. 일곱번째 이야기 출처 : http://mgdn.tistory.com 더보기
[MFC] My Thread MFC에서 쓰레드 만들때copy & paste 용도 My ThreadBOOL CUTMModuleDlg::ServiceStart() { // server thread m_ServerThreadKill.ResetEvent(); m_ServerThreadEnd.ResetEvent(); CWinThread* pServerThread = NULL; pServerThread = AfxBeginThread(ServerProc, (LPVOID)this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); if (pServerThread == NULL) { return FALSE; } else { pServerThread->ResumeThread(); } return TRUE; }void .. 더보기
스레드 수행 시간 측정 (보다 정밀한) ★ 쓰레드 수행 시간 + 시간 측정을 위해 대부분 GetTickCount64 함수를 이용 - 이 코드가 올바른 값을 획득하려면 코드 수행중 인터럽트가 수행되지 않았다는 가정 필요 - 선점형 운영체제에서는 쓰레드가 언제 CPU에 의해 수행될지 알수 없음 - 현재 코드를 수행 중 다른 작업 수행 가능 - 따라서, 쓰레드가 소비한 시간 부정확 - 실제 쓰레드가 부여받은 CPU 시간이 얼마나 되는지 알아내는 함수 필요 - GetThreadTimes / GetProcessTimes 함수 제공 + TSC (Time Stamp Counter) 이용 - 비스타 이전에는 clock timer를 기반으로 10에서 15 밀리초 단위로 CPU 시간 계산 - 비스타 부터 머신이 기동된 후부터 얼마만큼의 CPU 사이클이 수행되었.. 더보기