DLL(Dynamic Link Library)动态链接库, 直观讲就是封装起来的一堆函数,编译成二进制,来进行组件化,模块化,同时防止了技术泄露(most important ...)。
DLL的使用分两种形式:写代码来调用;设置项目属性来调用。
写代码调用就是在代码中写:
HMODULE procad = LoadLibrary(...);
这种方法类似于使用链表代替数组,会优化程序但是增加编程复杂度,也容易出错,不建议普通程序使用。这里只介绍DLL的自动链接.
1,放文件:首先将你的DLL和对应的LIB文件都放到DEBUG生成目录下。
2,添加库目录:
依次进入->解决方案(solution)->项目属性(properties)->链接器(Linker)
属性中有一个附加库目录(additional library directory) 在里面加入你当前工程的DEBUG目录,就是你刚才放DLL的地方。
3,添加LIB文件:在
链接器linker->输入input
的属性中添加附加依赖项(additional dependences):
添加如下: $(TargetDir)\你的LIB.lib 【注释1】
4,最后 将LIB 和 DLL加入工程:
右键你的工程->加入(add)->已有文件(existing)
把你放在Debug里面的lib和dll加进来。
(可选)5,加个头文件:
如果你很清楚你的DLL里有什么函数,你就可以直接用函数名正常调用了,但是大多数情况DLL里面函数很多,程序员习惯于在工程里添加一个头文件,里面写了DLL函数声明。
一般来说,给你的dll都会给你配套的 lib 和 头文件。
另外,一些环境下还必须有头文件声明,才能让编译器在DLL中寻找函数实现,
my_dll_name.h
void _API_ __stdcall_ printHello();
int _API_ __stdcall_ getBigger(int a,int b);
.......
专业的开发人员称此方法为(隐式调用),不易理解记忆。建议朋友们记 “自动调用”,不用写代码 ,将另一种需要写代码的调用记 “手动调用”。
【注释1】$(TargetDir)就是你的输出文件夹,工程当前是Debug模式,所以输出到debug。就像其他程序一样,他们的dll是和exe等文件放在一块的,只要在一个目录下,就可以找到dll。程序"错误:找不到xxxx.dll"的现象就是因为dll不在文件夹下。当然也可以把它设置成D:\ProgramFiles\ 但是如果你的用户没有D盘,(像我一哥们),就没办法了。
(Dig Tech, Speak Human)
讲技术,说人话
Aurora 极光城