C++ --- Dll文件的生成与调用(一)

1、动态库dll概念

动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 “.drv”(旧式的系统驱动程序)。

2、使用VS生成dll文件

(1)vs 那么可以直接创建c++空项目,然后修改一下项目属性,然后在制作无疑是最好的方式。

(2)添加一个 预处理定义

注意:没有编译项目,可以会出现vs2017配置属性里面没有c/c++

大概是是VS的一个BUG,在VS2005、VS2008、VS2015(其他版本未测试,不知有没有)新建项目勾选空项目时会出现。
解决方法: 写一些代码之后再编译,C/C++就会在配置属性里出现了。(这大概就是不勾选空项目不会出现这种情况的原因了)

(3)创建DemoDll.c和DemoDll.h文件

DemoDll.c文件

#include "demo.h"

int DemoDll_API add(int a, int b)
{
	return  a + b;
}

DemoDll.h文件

#pragma once

#pragma once
#ifdef DemoDll
#define DemoDll_API __declspec(dllexport)			// 导出
#else
#define DemoDll_API __declspec(dllimport)			// 导入
#endif // DemoDll

/*
\ brief
__cplusplus  c++宏
*/
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

	/*
	\ brief	 在这里编写 函数模块
	*/
	int DemoDll_API add(int a, int b);


#ifdef __cplusplus
}
#endif // __cplusplus

(3)在VS中编译源文件,可以在DEBUG目录中看到生成的.dll文件和.lib文件

3、新建一个项目,使用dll文件

(1)将DemoDll.h、DemoDll.lib和DemoDll.dll拷贝到项目下

(2)将DemoDll.h和DemoDll.lib文件添加到项目中

接下来我们查看下 头文件,就可以理解之前编写动态库 添加预处理的宏的好处。

(3)

创建main.cpp进行测试(使用DemoDll.dll)

#include<iostream>
#include"demo.h"

using namespace std;

int main(int argc, char* argv[])
{
	cout << " 80 + 6 = " << add(80, 6) << endl;
}

可以看到运行结果

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

创建main.cpp进行测试(使用DemoDll.lib)

#include<iostream>
#include"demo.h"

using namespace std;

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

int main(int argc, char* argv[])
{
	cout << " 80 + 6 = " << add(80, 6) << endl;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Overboom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值