HINSTANCE hDllInst = LoadLibrary(“动态库名”);
if ( hDllInst )
{
typedef DWORD (函数类型 *RSP)(同函数参数);
RSP HideProc = NULL ;
HideProc = (RSP)GetProcAddress( hDllInst, “函数名”);
if ( HideProc )
{
HideProc(参数);//函数调用
}
FreeLibrary(hDllInst);
}
if ( hDllInst )
{
typedef DWORD (函数类型 *RSP)(同函数参数);
RSP HideProc = NULL ;
HideProc = (RSP)GetProcAddress( hDllInst, “函数名”);
if ( HideProc )
{
HideProc(参数);//函数调用
}
FreeLibrary(hDllInst);
}
使用如下:
HINSTANCE g_hSmppDll = NULL;
typedef UINT MyFunc(char *); //DLL中的函数
MyFunc *pMyFunc=NULL;
g_hSmppDll =LoadLibrary("MyDll.dll");
ASSERT(g_hSmppDll );
pMyFunc=(MyFunc *)(GetProcAddress( g_hSmppDll, "MyFunc"));//引号中为DLL中的函数名
(*pMyFunc) ("ok"); 在于一个*.lib文件。在编译动态链接库时,VC++会为动态链接库创建一个引入
库(IMPORT LIB),即*.lib。库文件中只包含一些指向外部DLL库的函数索引指针,而
不是真正的代码,用于解析DLL的加载地址,并定义动态链接库和用于声明的头文件
的完全路径名。然后为引入库定义一个头文件,用来声明DLL中的函数。开发人员在引用时,
要配置如下:
A.在Project|Setting中的Link标签页的Object/library Modules 中加入*.lib
B.在Tools|Options中的Directories 标签页中的 Show directories for:下面的
Include files 中增加Myclass.h的路径;Lib files中增加*.lib 和*.dll路径。
这是一种常用的方法。实际上,应用程序就是通过这种方式来访问Windows 的API函数。
WINDOWS为其内核动态链接库生成引入库并提供了头文件。应用程序在编译时将引入
库的信息带入可执行文件中,运行时通过引入库信息访问API函数。