1.声明头文件 2.然后用typedef定义一个指针函数类型.typedef void(*fun) //这个指针类型,要和你调用的函数类型和参数保持一致,记住,是指针参数就是(int *,int) 3.定一个句柄实例,用来取DLL的实例地址。HINSTANCE hdll; 格式为hdll=LoadLibrary(“DLL地址”);这里字符串类型是LPSTR,当是unicode字符集的时候会不行,因此要在配置-属性-常规里面把默认字符集“unicode”改成支持多字符扩展即可。 4.取的地址要判断,返回的句柄是否为空,如果为无效句柄,那么要释放加载DLL所占用的内存。 FreeLibrary(hdll); 5.然后定义一个函数指针,用来获取你要用的函数地址,这个咋用呢? 先是定一个函数指针 fun FUN;然后通过GetProcAdress来获取函数的地址,这个函数参数是什么呢? 参数是DLL的句柄和你要调用的函数名:比如:FUN=(fun)GetProcAdress(hdll,"sum"); 这里也要判断要函数指针是否为空,如果没取到要求的函数,那么要释放句柄 FreeLibrary(hdll); 6.然后通过函数指针来调用函数。 FUN(int *p,int count);这里不能用函数名来使用函数,因为这个DLL本身不是当前CPP的一部分,而是通过windows去调用.没有在这个工程里声明或者定义,而是暴露出一个头,要指针获取他的地址,通过指针来调用. 最后调用结束后,就释放句柄 FreeLibrary(hdll); 实例: hDll = LoadLibrary("libucl.dll"); if(hDll != NULL) |
|