태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
2007/12/14 17:12    
WinCE의 DllMain 선언..     스킬북/개발 정보
네이버에서 이동 : http://blog.naver.com/tinywolf/40045363842

오늘의 삽질기... ㅡ_ㅡ;

정말 간단한 일이었다...
그냥 WinCE용 dll을 하나 만드는 걸 하고 있었다....
그런데....!!!

error C2731: 'DllMain' : function cannot be overloaded 두둥!!!

젠장 난 오버로드 안 뽑았다고!!
코드도 열라 간단했다..
#include "stdafx.h"
HMODULE g_hDLL = NULL;
BOOL APIENTRY DllMain( HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        g_hDLL = hModule;
        break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
        break;
    case DLL_PROCESS_DETACH:
        g_hDLL = NULL;
        break;
    }
    return TRUE;
}


더 이상 뭘 어쩌라고...

한 3 시간 삽질을 했다..
테스트 프로젝트도 몇번이나 만들어 봤다...

구글신의 도움도 구해 보았다..
해결 못한 질문으로 3개만 검색되었다..

정녕 이 문제의 해결법은 없는 것인가..
빈 프로젝트로 DLL 만드는 짓따윈 하지 말란 말인가 했다...

그런데 테스트로 생성한 프로젝트와 한줄 한줄 비교하던 도중 다른 점을 발견했다..

HMODULE이 아니고 HANDLE이닷!!!

털썩... OTL..

뭐냐... 왜 WinCE는 DLL의 핸들이 HANDLE이냐....
3시간 헤매고 단 2줄 고쳐서 완성하였다..

BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved )
        g_hDLL = (HMODULE)hModule;

젠장...
총기를 탈취해서 빌게이츠를 쏴버리고 싶어졌다..

PS : 테스트하다 발견한 신기한 점
       WinCE 프로젝트의 "미리 컴파일된 헤더 사용"에 대해서 인데..
       프로젝트 생성할 때 생성된 stdafx.cpp가 있으면 미리 컴파일된 헤더가 알아서 만들어지고 사용된다.
       그런데 내가 만들어서 넣은 stdafx.cpp는 미리 컴파일된 헤더가 안 만들어진다. (별 내용도 없음에도 불구하고!)
       "그래서 컴파일 못하겠다"는 메세지만 열라 뱉는다.
       더 수상한 건 프로젝트 생성 때 만들어진 stdafx.cpp를 프로젝트에서 뺐다가 하나도 안 고치고 다시 추가해도
       미리 컴파일된 헤더 못 만들겠다고 배를 짼다..
       그래서.. "미리 컴파일된 헤더 사용 안 함"을 했다.. ㅡ_ㅡ
       M$는.. 컴파일러도 무슨 짓을 하는 건지 알 수 없는 수상한 녀석을 넣어주다니..

크리에이티브 커먼즈 라이선스
Creative Commons License

'스킬북 > 개발 정보' 카테고리의 다른 글

Doxygen을 사용한 코드 문서 쉽게 생성하기  (2) 2008/01/07
WinCE의 DllMain 선언..  (0) 2007/12/14
WinCE용 프로젝트 만들기..  (0) 2007/09/06
코딩용 글꼴..  (2) 2007/08/22
Posted by |꼬마늑대|

댓글을 달아 주세요

 체크하면 블로그 관리자에게만 내용을 공개합니다.