27功能之VS2017动态库的制作与使用

27功能之VS2017动态库的制作与使用

赏你:
这里提供动态库是否成功导出函数的工具官网,下载时注意,看你VS头顶上面有个Debug和XXX版本,你的是x86就下载x86,x64就下载x64。
http://www.dependencywalker.com/

前言:实际上动态库的生成和上一篇静态库是一模一样的。只不过上一篇是用VS2013讲。

1
点击Windows桌面向导,不建议直接生成DLL那个选项,文件多,并且容易出错。
在这里插入图片描述

2
选择动态链接库-空项目。
在这里插入图片描述

3
建立对应的.h和.cpp文件,按我如下的办法输入,缺一不可,注释在上面有。
1)_declspec(dllexport)不写的话生成的dll实质是没有导入到函数,可用dependency软件查看。将生成的dll文件直接拖进去即可,该软件很小的很实用。
2)extern "C"是用户保证导进dll动态库的名字与源码的名字一样,放在显示调用时传进函数名与生成的函数名不一样,因为生成的函数名被C++编译处理过。动态库 的显示调用需要用到<windows.h>下的相关函数,通过函数指针来操作返回的函数首地址来调用函数,这里不写。
隐式调用可以直接在主函数写出来,但是VS2017不写好像是默认是隐式调用,因为我这里没写就是正常调用的。

#pragma comment(lib,"xxx.lib")//隐式调用动态库。参数2为路径

在这里插入图片描述
在这里插入图片描述

4
上面在Debug生成的结果如下,必须是有两个,只有一个说明你函数里有错,自己去检查。MyDll1.lib不是真正的静态库,只是调用动态库函数的入口声明。
在这里插入图片描述

5
按平时正常的生成一个带主函数.cpp文件。

6
添加动态库的头文件,这里我写的是相对路径,如果你想省略前面的东西,可以将动态库的头文件拷贝到当前项目下(即与带有.cpp的目录下)即可。
在这里插入图片描述

7(很重要)
上面的步骤只是添加了头文件,然而实现文件还在动态库,所以我们需要在项目的属性中添加,共两步:
1)项目-属性-VC++目录-库目录-添加xxx.lib的所在目录。
在这里插入图片描述

2)
第一步只是添加了库目录,但是实际上还没有添加具体的库文件。
链接器-输入-附加依赖项-添加使用到的所有库文件-应用-确定。
这次是此文件,第一步是库目录,这点注意下。
在这里插入图片描述
此外:实际上第七步可以用这种方法代替,就是将对应的库文件与dll文件拷贝到当前项目下,然后右击资源文件-添加现有资源;也是能成功调用的。

8
此时可以看到,我们成功的调用了封装好的动态库。主要的难点是在于添加头文件与库文件,需要对路径及生成目录很熟悉。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44517656/article/details/108171005