본문 바로가기

Programming/Tips(C++,C#)142

Chapter 06. Visual C++ 컴파일러 6.1 COM지원 VC++컴파일러 개요. - VC++컴파일러는 COM컴포넌트의 형식라이브러리를 읽어 이를 컴파일 가능한 C++코드로 변환해준다. VC++에서 COM을 지원하기 위한 예약어는 다음과 같다. + #import, __Declspec, __uuidof, _com_ptr_t, _com_error, _bstr_t, _variant_t, 전역함수 - 이제까지 해왔던 COM객체의 CLSID를 얻어오는 과정을, #import "progID"로 해결 가능하다. - IHelloPtr pIHello( __uuidof(Hello)); 위 구문은 다음과 같다. IUnknown* pUnk = NULL; IHello* pIHello = NULL; hr = ::CoCreateInstance(clsid, NULL, CL.. 2014. 11. 10.
Chapter 05. Out-of-Process server COM component 5.1 마샬링의 이해 5.1.1 아웃-오브-프로세스 서버 COM컴포넌트 구현시 고려사항 - 인 프로세스 서버에서는 COM컴포넌트가 가리키는 주소 값은 클라이언트와 같은 영역 안에 존재한다. (인-프로세스 서버버 컴포넌트는 클라이언트에서 해당 DLL을 불러온다.) 그러나 아웃-오브-프로세스 서버는 다른 프로세스 메모리 영역에 위치한다. 즉, COM컴포넌트에서 리턴해 준 인터페이스 주소를 클라이언트에서는 사용할 수 없다. 5.1.2 표준 마샬링 과정 - COM은 IPC(Inter-Process Communication. 프로세스간 통신)을 위해 LPC(Local Procedure Call)과 RPC(Remote Procedure Call) 두가지를 사용한다. LPC는 같은 시스템 상에서 실행되는 아웃-오브-.. 2014. 11. 10.
chapter 7-9. 내용정리 1. 반복자 반복자 카테고리와 기능 카테고리 기능 제공자 입력반복자 전방향 읽기 istream 출력반복자 전방향 쓰기 ostream, inserter 전방향반복자 전방향 읽기/쓰기 양방향반복자 전/역방향 읽기/쓰기 list, set, multiset, map, multimap 랜덤액세스반복자 랜덤액세스 deque, vector, string, array 전방향 반복자는 입력/출력반복자의 기능을 포함하고, 양방향 반복자는, 전방향반복자 + 역방향 지원, 랜덤 액세스 반복자는 양방향 반복자에, 랜덤 액세스까지 지원하는 반복자. * 반복자에서 증가/감소 연산자 사용시, 전위증가(감소)연산자를 사용하는 것이 더 유리하다. 후위증가(감소)연산자의 경우 임시객체를 생성하기에 상대적으로 더 느리다. 1) 보조반복자 .. 2014. 11. 7.
Chapter 2-6. 내용정리 1. 템플릿 - 임의의 데이터 타입을 위해 작성된 함수 or 클래스. 정확하게는 '정의'만 한 것이다. 예를 들어 다음과 같은 템플릿이 있다고 하자. template inline const T& max(const T& a, const T& b) { return a>b? a: b; } 위 정의 자체는 아무런 영향을 주지 않는다. 이 정의가 유효하려면, 사용이 되어야 '컴파일타임'에 실제 함수가 만들어진다. 예) int a = 10; int b = 10; max(a,b); // 위 템플릿에서 max(T, T). 여기서는 타입이 int이므로, max(int, int)함수가 생성된다. float c = 10.1f max(a,c); // 찾아봐도 max(T1, T2)는 존재하지 않는다. 컴파일러시 T가 모호하다고.. 2014. 10. 30.
할당자 사용자 지정 할당자 예 #include #include namespace MyLib{ template class MyAlloc{ public: //type정의 typedef T value_type; //원소의 타입 allocator와 동일 typedef T* pointer; //원소의 포인터에 대한 타입 typedef const T* const_pointer; //상수 포인터에 대한 타입 typedef T& reference; //원소의 레퍼런스에 대한 타입 typedef const T& const_reference; //원소의 상수레퍼런스에 대한 타입 typedef std::size_t size_type; //가장 큰 객체의 사이즈를 표기하기 위한 타입 typedef std::ptrdiff_t diff.. 2014. 10. 30.
Chapter 04. 인-프로세스 서버 COM 컴포넌트 인-프로세스서버 COM컴포넌트 - 같은 클라이언트 프로그램 안에서 COM컴포넌트가 생성되고 실행되는 것. 4.1 Win32 DLL의 이해 - 클라이언트 안에서 인-프로세스 서버 COM 컴포넌트가 실행되기 위해서는 Win32DLL이어야함 4.1.1 프로세스와 DLL - 윈도우 운영체제의 프로세스는 4GB의 고유의 주소영역을 가짐. OS의 메모리관리자는 페이징을 이용 해 프로세스가 소유한 물리적인 메모리에 대해 4GB크기의 연속적인 리니어 주소 어딘가에 매핑되게 하 여 다른 프로세스의 메모리를 알 수 없게 한다. > 하나의 프로세스에 문제가 생겨도 다른 프로세스는 영향받지 않음. > DLL의 물리적 메모리 영역은 DLL을 로드한 어플리케이션의 프로세스 주소에 매핑된다. 4.1.2 DLLMain함수 - DLL.. 2014. 10. 29.
728x90