今天在网上找了一本电子书。跟着学起来了DLL的使用。。。
感触很深::
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
库 头文件。。。
#ifndef LIB_H
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#define
LIB_H
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
extern
"
C
"
int
__declspec(dllexport)add(
int
x,
int
y);
//
定义出口
#endif
//
源文件
#include
"
lib.h
"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
add(
int
x,
int
y)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
return x+y;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
/////下面就是调动DLL的文件了
//
新建一个C文件就行了。。。
这里我用DLLCALL...
#include
<
stdio.h
>
#include
<
windows.h
>
typedef
int
(
*
lpAddFun)(
int
,
int
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
main(
int
argc,
char
*
argv[])
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
HINSTANCE hDll;
lpAddFun addFun;
hDll=LoadLibrary("dllTest.dll");
if (hDll!=NULL)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
addFun=(lpAddFun)(GetProcAddress(hDll,"add"));
int r=addFun(2,44);
printf("re=%d ",r);
}
FreeLibrary(hDll);
return 0;
}
程序中最重要的几个地方:
1:extern "C" int __declspec(dllexport)add(int x,int y);定义出口
2:typedef int (*lpAddFun)(int ,int );宏定义一个指针
3: HINSTANCE hDll;
lpAddFun addFun;
hDll=LoadLibrary("dllTest.dll");
4:函数的引入:addFun=(lpAddFun)(GetProcAddress(hDll,"add"));