【VisualStudio 2017动态库(.dll)生成与使用】


前言

Windows下 VisualStudio 2017 C++ 动态链接库的生成以及使用


提示:以下是本篇文章正文内容,下面案例可供参考

一、生成动态库链接

创建动态库,项目名称命名为Example
【创建DLL项目的时候,VS会自动定义宏EXAMPLE_EXPORTS,在项目属性—C/C++预处理器—预处理器定义里面可以看到】。
注意:定义宏的名字就是项目名称的大写加__EXPORTS。【例:项目名为good_boy ,则端口名称为GOODBOY__EXPORTS】

在这里插入ss   图片描述

创建好项目,并创建.cpp和.h文件,创建好后界面如下:

在这里插入图片描述

example.h 中的代码如下:

#pragma once
#include<iostream>
using namespace std;

#ifdef  EXAMPLE_EXPORTS  //项目名称Example对应的宏定义,如果项目名和我的不一样请修改
#define DATAEXCHANGEDLL_API __declspec(dllexport)
#else
#define DATAEXCHANGEDLL_API __declspec(dllimport)
#endif 

DATAEXCHANGEDLL_API    int add(int a, int b);
DATAEXCHANGEDLL_API    int sub(int c, int d);t

example.cpp 中的代码如下 :

#include"pch.h"
#include"example.h"
int add(int a, int b)
{
	return a + b;
}
int sub(int c, int d)
{
	return c - d;
}

生成解决方案

在这里插入图片描述

生成解决方案后,打开项目所在路径,找到.dll文件和.lib文件。动态库生成完毕。

在这里插入图片描述

二、使用生成的动态库

1.引入库

创建新项目

在这里插入图片描述

创建 Example_link.cpp代码如下:

#include <iostream>
#include"example.h"
using namespace std;
int main()
{
	int num1 = 10;
	int num2 = 6;
	int c = add(num1, num2);
	int d = sub(num1, num2);
	cout << c << endl;
	cout << d << endl;

	system("pause");
	return 0;
}

点击生成解决方案,会报错但没关系。动态库是在debug x64环境下生成的,所以在这里要保持一致【这一步的目的是生成 Example_link\x64\Debug 文件夹 】
在这里插入图片描述

将第一个项目Example文件中的example.h文件复制到该路径下。
在这里插入图片描述

将第一个项目文件中的.lib 文件和.dll文件复制到该路径
在这里插入图片描述

在新建的项目中添加刚刚复制过来的头文件
在这里插入图片描述

在项目属性—链接器—常规—附加库目录,引入项目依赖的库文件(.lib)所在 位置
然后点击应用 ——确定。
在这里插入图片描述

需要在项目属性—链接器—输入—附加依赖项,设置项目依赖的库文件(.lib)
在这里插入图片描述

最后添加上引入的lib文件即可。
在这里插入图片描述

2.运行

点击重新生成解决方案,后运行即可。运行结果如下:

在这里插入图片描述

注意:圈出来的部分需要与生成动态库保持一致!!!!

总结

以上就是生成动态库并调用的方法。参考文章:

https://blog.youkuaiyun.com/Hide_on_Stream/article/details/109172054

https://blog.youkuaiyun.com/LEOZ_PTLS_PL/article/details/134348187?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171037893016800225561667%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171037893016800225561667&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-2-134348187-null-null.nonecase&utm_term=vs%E7%94%9F%E6%88%90c%2B%2B%E5%8A%A8%E6%80%81%E9%93%BE%E6%8E%A5%E5%BA%93&spm=1018.2226.3001.4450

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值