Saturday, April 4, 2015

Visual C++ LoadLibrary() 사용후 GetProcAddress() 매크로

LoadLibrary후 GetProcAddress하는 과정이 너무나 반복되는 코드가 많고 그러다 보니 매크로를 만들게 되었다. 이 매크로는 문자열을 UNICODE를 사용하는 환경에서도 동작한다.

함수포인터는 다음과 같이 인스턴스 앞에 pfn으로 끝나게 약속하여야 한다.

//헤더
typedef void (*pfnOverlay_GLClear)();
extern pfnOverlay_GLClear Overlay_GLClear;

//소스
pfnOverlay_GLClear Overlay_GLClear;

매크로 소스는 다음과 같다. LOAD_FUNC(함수명) 이렇게 넘겨주면된다. 여기서 ##는 두개의 문자열을 붙여주는 역할을하며 #는 입력받은 문자열을 ""를 붙여 문자열로 사용될수 있게 만들어준다.

//매크로
#define LOAD_FUNC(func) func = (pfn##func)GetProcAddress(hDll, #func);\
 if(func) \
  OutputDebugStringA(#func);\
 else \
  OutputDebugStringA(#func " error");

No comments:

Post a Comment