动态加载DLL

相比于静态加载lib库,动态加载DLL更具有灵活性,而且不需要知道头文件。一般来说,动态加载DLL有以下几个步骤:

  第一,根据DLL的函数,定义对应的函数指针。比如  

1 // Define function pointers.
2 typedef LPSTR (*PU2A)(LPCWSTR wStr, int iCodePage);
3 typedef LPCWSTR (*PA2U)(LPCSTR aStr, int iCodePage);

  第二,加载DLL,并返回HMODULE。如下:

1 HMODULE hModule = ::LoadLibrary(_T("HbUtils.dll"));
2 if( NULL == hModule )  nRetCode = -1;

  第三,获取函数的起始地址:

1 PU2A u2a = (PU2A)::GetProcAddress(hModule, "U2A");
2 if( NULL == u2a )    nRetCode = -2;

  最后,我们就可以调用DLL的函数了。

LPSTR aStr2 = u2a(_T("大家好!"), 936);

 

posted @ 2013-04-02 17:12  nchxmoon  阅读(272)  评论(0编辑  收藏  举报