Visual Studio 2017 创建动态链接库
目录
四、在头文件中声明一个导出函数(convert_array)
一、新建项目
1.打开Visual Studio 2017 ,点击文件-》新建-》项目
2.点击 Windows桌面,然后点击动态链接库(DLL)

然后自己命名并选择保存路径

然后点击确定。
二、添加头文件
1.鼠标右键点击头文件-》添加-》新建项
2.点击 头文件(.h),然后命名头文件名,点击添加:

三、添加源文件
1.鼠标右键点击源文件-》添加-》新建项

2.点击 C++文件(.cpp),然后命名源文件名,点击添加
四、在头文件中声明一个导出函数(convert_array)
1.在头文件(myDLL.h)中添加如下代码:
#pragma once
#if BUILD_MYDLL
#define API_SYMBOL _declspec(dllexport)
#else
#define API_SYMBOL _declspec(dllimport)
#endif // BUILD_MYDLL
extern "C" API_SYMBOL int convert_array(int * data, int len);
2.鼠标停留在convert_array上方,会发现显示 未找到convert_array的函数定义。

3.按下Alt+Enter,点击创建convert_array的定义在myDLL.h中:

4.删除宏(API_SYMBOL):
5.点击图中标注的按钮(转到文档)

6.打开源文件(myDLL.cpp)编辑如下代码:
(第一个for循环是输出数组的元素)
(第二个for循环是数组元素求和,再给数组的每个元素减1)
#include "myDLL.h"
#include <iostream>
using namespace std;
int convert_array(int * data, int len)
{
for (int i = 0; i < len; i++) {
cout << data[i] << ",";
}
cout << endl;
int nTotal = 0;
for (int i = 0; i < len; i++) {
nTotal += data[i];
--data[i];
}
return nTotal;
}
7.为了让dllexport有效,需要在头文件(myDLL.cpp)开头定义宏(BUILD_MYDLL)

在myDLL.cpp代码开头添加
#define BUILD_MYDLL
此时myDLL.h中的dllexport变成了高亮显示,说明其有效了:

8.还需要添加 #include "pch.h"

可以看下
五、编译
鼠标右键点击项目名(DLLTest)-》生成

显示生成成功:

六、创建一个应用程序来调用这个动态库
1.右键点击 解决方案-》添加-》新建项目

2.选择 控制台应用,命名后点击确定

3.在DLLTestApplication中通过隐式调用来调用动态库,需要DLLTest.lib、DLLTest.dll和头文件myDLL.h的支持。

4.在主程序中先引入头文件,发现代码有红色波浪线的错误提示:无法打开源文件myDLL.h,因此需要给主程序提供一个源文件的搜索路径。

5.右键点击DLLTestApplication-》属性

6.依次点击常规;附加包含目录;下拉列表中的编辑

7.点击下图标注的图标

再点击标注的按钮:

8.选择动态库的目录,然后点击选择文件夹

点击确定:

9.依次点击 应用、确定

此时发现没有错误提示了

下面开始引入lib符号文件:
10.右键点击 DLLTestApplication-》属性

11.依次点击 输入、附加依赖项、下拉箭头中的编辑

12.输入符号文件的名字,然后点击确定

点击应用

下面再给符号文件添加一个搜索路径
13.依次点击常规、附加库目录、下拉箭头中选择编辑

14.依次点击下图中标注的按钮

15.选择Debug文件夹,然后点击选择文件夹

点击确定

依次点击应用、确定

七、在应用程序中编写调用代码
1.编写调用代码:

// DLLTestApplication.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include "myDLL.h"
int main()
{
int arr[] = { 3,6,7,8 };
int nLen = sizeof(arr) / sizeof(int);
int nTotal = convert_array(arr, nLen);
std::cout << "数组元素求和结果:" << nTotal <<std::endl;
std::cout << "数组元素新值:" << std::endl;
for (int i = 0; i < nLen; i++) {
std::cout << arr[i] << ",";
}
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
2.将DLLTestApplication设为启动项

3.运行

结果:

更多推荐


所有评论(0)