使用vs建立动态链接库DLL过程和使用方法

使用vs建立动态链接库DLL过程和使用方法

1、普通导出方式,函数名字显示,创建一个DLL

然后右键-->新建一个类

添加代码

头文件添加声明:

导出的时候,编译器会考虑按照c或者c++的方式导出,c++中由于有重载存在(即函数名字相同,函数参数不同),当生成c++的导出函数的时候,就会由编译器加一堆乱七八糟的符号,并且c++的导出函数只能由c++调用,C语言等其它语言是调用不了的。

然后F7,生成

使用DLL的方法:隐式链接和显示链接,隐式链接是程序一开始就加载DLL到内存,程序终止时释放占用的内存。显示链接是程序使用dll的时候加载,使用完毕后释放内存。

(1)隐式链接:

1.将*.dll 和*.lib复制到工程目录中(注意:这里生成的DLL和lib文件。lib中存的是函数代码在什么地方,真正的二进制代码在dll中)

2.在源码中加入函数的声明:

#pragma comment(lib, "XXXX.lib")

extern "C" _declspec(dllimport) int _stdcall LearnAdd(int a,int b);//说明是全局的导入函数

extern "C" _declspec(dllimport) int _stdcall LearnSub(int a,int b); extern "C" _declspec(dllimport) int _stdcall LearnMul(int a,int b); extern "C" _declspec(dllimport) int _stdcall LearnDiv(int a,int b);

3. 调用

(2)显式链接的方法:函数指针

(1)只用将*.dll复制到工程目录中

(2)定义函数指针

(3)定义函数指针变量

(4)加载dll到内存中

(5)使用查找dll中要用的函数地址(使用函数名查找或者函数的序号查找)

(6)用查找的地址给函数指针赋值,然后直接调用函数。"_LearnAdd@8"是命名规则,会在原来的函数前边加下划线,8表示有2个参数(1个参数4字节)

以上导出的函数在Dependency中查看的时候,会看到函数的名字,而一个有意义的函数名一般是这个函数功能的高度概括,有时候需要把函数名字隐藏起来,就可以使用*.def,把导出函数名字隐藏:

2、使用*.def导出,隐藏函数名

1)创建一个DLL,

2)添加类

3)添加代码和声明,这里代码和声明,用普通的函数编码和声明,不用export关键字了。

4)在自己的动态链接库的项目右键->新建-->*.def,

5)编辑*.def文件

5)为刚定义的函数编辑序号和不要名字

6)F7生成。

使用*.def导出函数的

📚 相关推荐

ppt自带图标在哪里
baby半仙个人资料简介 和林俊杰一起玩吃鸡关系不错
杭州西塘怎么坐车 西塘火车怎么去
为什么现在韩剧看不了(为什么韩剧都不能看了)
如何在手机上修改WiFi密码 手机上修改WiFi密码方法【步骤】
最近删除的文件怎么恢复?5种方法轻松解决!