
COM study note 3 다이나믹 링킹
2020. 10. 27. 11:20
삽질/COM
1. Dynamic Linking 은 DLL을 통해서 코드를 패키징 하는 방법이다. 2. DLL은 C 스타일 함수를 뱉는 놈이고, 앱에서는 DLL을 자유롭게 선택이 가능하다. 3. 앱은 소스코드에 접근하지 않고도, DLL을 통해서 그 함수의 기능을 사용할 수 있다. 4. 소스코드의 내용이 길고, 드물게 사용하는 놈들은 다른 DLL에 때려박아서. 쓸데없는 메모리 흔적을 줄일 수 있다. DLL 파일 사용해보기 1. powershell을 켜봐라. 2. notepad로 Library.h, Library.cpp, Library.def 파일을 만들어보아라, notepad++ 보다는 notepad2를 사용하여야 cmd 창에서 사용할 수 있을 것이다. 내용은 아무렇게나 한다. 3. def 파일은 optional 이긴 ..
COM study note 2 역사
2020. 10. 26. 23:13
삽질/COM
1. COM 이 모양을 갖춰가던 80년대 후반, OOP의 C++과 COM은 사실 형제였다. 2. 그전까지 표준화되지 않았던 C++는 98에 이르러서 표준화되었으나, 여전히 두 가지 문제를 가지고 있었고, C#과 Java로 개발자들이 몰리면서 침체기를 맡게 된다. 3. 다른 컴포넌트에 영향을 미치지 않으면서, 라이브러리를 수정하기가 어려웠고, 운영체제와 같은 범용적으로 쓰이는 컴포넌트를 사용하는 프로세스들이 메모리에 동일한 코드를 중복적으로 저장하는 문제점이었다. 4. DLL을 사용하여 두 문제를 해결했지만, 컴파일러 호환성 문제를 발생시켰다. 5. C++ 표준은 binary 레벨에서의 표준을 의미하지는 않았지만, 모두 C에서부터 파생됐다는 공통점이 있었다. 6. C++에서 COM으로 마이그레이션 하는 것..
COM study note 1 소개
2020. 10. 26. 18:46
삽질/COM
"COM is an architecture for component reuse that allows dynamic and efficient composition of systems from independently developed binary components." - Don Box - 1. 저 말을 한 Don Box 라는 사람은 암튼 부자임에 틀림없다. 저 말에 따르면, COM은 binary 레벨에서 독립적으로 개발된 것들을 통합하고 재사용하기 위해 만든 아키텍처라는 것이다. 역시 진정한 개발은 binary 레벨이서 일어나는 것이다. 결국에 COM이라는 것은 binary standard인 것이다. 2. COM이 개발되던 시기에는 C++ 붐이 일어나던 때였고, COM 저편에 깔려있는 아이디어 역시, C..
Win32 API 프로그래밍 note
2020. 10. 26. 14:18
삽질/COM
1. API 에서는 유니코드 문자집합을 사용하느냐, 멀티바이트 문자집합을 사용하느냐에 따라, 데이터 타입이 살짝 다르다. 2. 또한 프로그램의 진입점 또한 다르다. 멀티바이트에서는 WinMain을 사용하고, 유니코드에서는 wWinMain을 사용한다. _tWinMain을 사용하면 자동으로 바뀐다. 3. MFC를 사용하지 않는 이유 MFC는 API를 기반으로 만들어졌으며, API의 wrapper에 지나지 않는다. MFC를 사용하느니 차라리, UWP를 사용하는 것이 낳다. 4. API 에서 렌더링을 하고자 할때, GDI를 사용하지 않는 것이 좋다. GDI는 너무 오래 되었고, Vulcan, OpenGL, DirectX 라는 좋은 옵션들이 있기 때문이다. 5. 프로그램 자체 exe 는 hInstance에 대응된..