ATLASSERT error on line3637 of atlcom.h

[Win32 Programming/ATL/WTL]
<환경>
- Visual C++ .NET 2003
- WTL 8.0

WTL Application에서 ActiveX를 호스팅 할 경우
디버그 모드로 실행 중 다음과 같은 에러 메세지를 만나게 된다.


위의 경고문은 'atlcom.h' 파일의 3637번째 줄에 존재하는 아래의 코드에 의해 발생한다.

ATLASSERT(!InlineIsEqualGUID(*m_plibid, GUID_NULL) && "Did you forget to pass the LIBID to CComModule::Init?");

Microsoft에 다음과 같은 support page가 있었으나 크게 도움이 되지는 않았다.

위 에러에는 다음과 같이 두 가지 해결책이 있다.

1. 프로젝트 속성의 'ATL 사용' 속성을 'ATL에 동적 링크'로 설정.
2. '_tWinMain'의 코드 일부를 아래와 같이 변경
<변경 전>
hRes = _Module.Init(NULL, hInstance);

<변경 후>
GUID guid;
hRes = _Module.Init(NULL, hInstance, &guid);
2007/12/28 22:10 2007/12/28 22:10

[VC++] 전병선의 Component Development with Visual C++ & ATL (★★★★☆)

[추천도서/프로그래밍]

제목 :  전병선의 Component Development with Visual C++ & ATL
출판사 : 영진.COM
저자 : 전병선

내가 이 책을 구입한 것이 2005년 10월쯤 이었던 것으로 기억된다.
당시에 VC++ 경력 1년 정도의 풋내기였고,
그것도 중간에 수술로 두달이나 쉬어서 정말 엉망진창의 신입이었다.

이 책을 구입하게 된 계기는 ActiveX 업로드 컴퍼넌트 개발 때문이었다.
다음카페에서 글을 쓸 때 하단에 보이거나
데브피아에서 '덱스트 업로드'라고 판매하는 그런 류의 물건 말이다.

그 당시 나는 MFC도 많이 서툴렀고,
COM/ActiveX는 문외한이었으며,
웹이라면 끔찍히 싫어하던 그런 시절이었다.
그런 본인이 이 책을 길잡이 삼아 한 달 동안 미친듯이 공부해서 결국 완성을 시켰고,
그 뒤로 본인은 회사의 ActiveX 전담 개발자가 되었다.
그리고 후에 Mozilla Plugin까지 전담하게 되었다.

뭐, 어쨌든지 당시 이 책이 없었더라면
나는 그 프로젝트를 성공하지도 못했을 것이고,
지금과 같은 실력과 자신감을 얻지도 못했을 것이다.

COM을 공부하려고 마음 먹었다면,
꼭 이 책을 한 번 보기를 권유하는 바이다.
단, 이 책을 보며 실무에 적용할 때
책에서 알려주지 않았던 아쉬운 내용들이 조금 있기에
평가는 별 네개로 결정하였다.

2007/01/14 21:21 2007/01/14 21:21