目录

一、新建项目 

二、添加头文件 

三、添加源文件

四、在头文件中声明一个导出函数(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.运行

 结果:

更多推荐