[DLL 01] 使用Visual Studio 2017 生成动态链接库及调试代码

(本文包含:使用VS生成DLL,代码调试,查看DLL内容,更改DLL文件名,模块定义文件)

.使用Visual Studio生成动态链接库的总体流程如下:

1. 文件 -> 新建 -> 项目

2. 模板中选择 Visual C++ Win32 控制台应用程序,确认。

3.  在Win32 应用程序类型选择 DLL,附加选项勾选空项目,点击完成

 

4. 编写程序,添加到解决方案的源文件中。

#include <iostream>

__declspec(dllexport) void say_hello()
{
	std::cout << "Hello world!" << std::endl;
}

int main()
{
	say_hello();
	return 0;
}

5. 如果代码无需进行测试,此时即可可生成解决方案(生成->生成解决方案 或者 CTRL+SHIFT+B)。

6. 若代码较为复杂,就需要对代码或者生成的进行调试。有很多种对DLL进行调试的方法,在此不一一赘述。

若希望使用当前工程进行调试代码,就需要生成可执行文件。(注意:此处的调试是对代码进行调试,而非DLL,此步骤的目的是为了验证代码)

首先在项目的属性页中添加一个解决方案配置,从之前的debug里复制设置。

 7. 将配置属性 -> 常规 -> 项目默认值 -> 配置类型修改为应用程序.exe

配置属性 -> 链接器 -> 系统 -> 子系统 修改为控制台(/SUBSYSTEM:CONSOLE)。

 

8. 运行程序,可以看到输出的结果。

9. 确保代码无误以后,将配置切换为debug,并生成解决方案,即可得到动态链接库。

 

 

10. 修改动态链接库的文件名的步骤:配置属性 -> 常规 -> 目标文件名

 

11. 生成动态链接库以后,如果希望对动态链接库的内容进行确认,可以使用VS 自带的 dumpbin来查看dll的函数及参数。

① 打开命令提示符;

② 跳转到dumpbin所在的目录;

③ 使用如下命令查看动态链接库信息;

dumpbin /exports "目录\文件名.dll"

12. 直接导出的动态链接库中函数名称包含一些符号,用以描述函数相关输入输出类型。如果想要保证DLL中的函数名与代码中完全一致,可以添加.def文件,步骤如下:

① 添加一个新建项;

② 选中Visual C++ -> 代码 -> 模块定义文件

③ 编辑.def文件内容如下

LIBRARY

EXPORTS
 say_hello @ 1

④ 重新生成解决方案,并再次使用dumpbin查看dll的内容,可以发现此时的函数名与代码保持一致。

⑤ 当使用.def文件标记需要导出的函数时,无需使用__declspec(dllexport)标记需要导出的函数。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值