前言
Windows下 VisualStudio 2017 C++ 动态链接库的生成以及使用
提示:以下是本篇文章正文内容,下面案例可供参考
一、生成动态库链接
创建动态库,项目名称命名为Example
【创建DLL项目的时候,VS会自动定义宏EXAMPLE_EXPORTS,在项目属性—C/C++预处理器—预处理器定义里面可以看到】。
注意:定义宏的名字就是项目名称的大写加__EXPORTS。【例:项目名为good_boy ,则端口名称为GOODBOY__EXPORTS】
创建好项目,并创建.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