c++关于动态加载Dll.

来源:互联网 发布:光盘菜单制作软件 编辑:程序博客网 时间:2024/04/29 18:28

加载dll是开发程序必不可少的步骤之一,一般情况下用到第三方dll的时候没有.lib文件以及.h文件。那么就需要动态加载dll。当然用到第三方dll的时候应该会有开发文档。不然的话

虽然用工具能查看函数原型,但是里面的参数问题也会有困扰。

那么动态加载dll呢,网上资源很多。我现在也整理了出来。

HMODULE hDLL;

hDLL=LoadLibrary("动态库名");

这样呢就把动态库加载上了,但是我用的绝对路径,需要把这个动态库复制到你源码的根目录下。比如你是Demo,那么就复制到Demo里面的Demo里面去。

然后就是把封装好的函数取出来了。

typedef  int(*FUNCTION)(原函数的参数,多个用,隔开);那里 的int呢,是函数原型,比如是void 那么就把int换成void。

FUNCTION fun=(FUNCTION)GetProcAddress(hDLL,"函数名");

这样就取得函数了,

调用函数用fun(参数)。这里fun就是你加载动态库的函数别名。当然你也可以用函数原名, 至于大写的FUNCTION就是一个指针,给函数开辟了空间,这个名字也可以换.

最后用完这个别忘了FreeLibrary(hDLL);

这就是动态加载dll了,如果你需要的函数很多,也不止在一个函数里面用,我建议把他设为全局变量。

HMODULE hDLL;

hDLL=LoadLibrary("动态库名");

typedef  int(WINAPI *FUNCTION)(原函数的参数,多个用,隔开);

FUNCTION fun=(FUNCTION)GetProcAddress(hDLL,"函数名");

FreeLibrary(hDLL);



0 0