基于VS2017的DLL的创建与使用
参考文献:
动手 | 奶奶级的动态库入门
1、工具准备
VS2017:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
2、步骤
2.1、建立DLL库
1、打开VS2017,文件——新建——项目,选择Windows桌面向导——命名文件名——选择文件保存路径,确定
2、选择动态链接库——空项目。确定
3、确定后如图进行选择
4、右击头文件——添加——新建项,按图步骤选择,添加
在头文件里添加如下代码
#ifndef TESTDLL_H
#define TESTDLL_H
// 条件编译指令
// 在预处理器里事先定义好_DLLAPI,保证dll项目有预定义;
// 而新程序项目里没有,从而区分导入和导出。
#ifdef _DLLAPI
#define DLLAPI __declspec(dllexport) // 导出
#else
#define DLLAPI __declspec(dllimport) // 导入
#endif
// 声明导出函数
DLLAPI int add(int a, int b); // 导出add接口
#endif
5、相同步骤,并按图操作,添加
同样步骤在源文件中添加如下代码
#include "testdll.h"
int add(int a, int b) // 函数实现
{
return a + b;
}
6、选中testDLL并右击——属性后按如图步骤输入_DLLAPI,一路确定退出。
7、同样选中testDLL右击选择生成,此时可在该路径下看到这些文件。
2.2、测试DLL库
1、选中解决方案右击——添加——新建项目,并按图所示操作。确定
按图所示选择。确定
2、在test项目中选中源文件右击——添加——新建项目,并按图选择操作。添加
将如下代码添加进去
#include <iostream>
#include "../testDll/testdll.h"
#pragma comment(lib, "testDll.lib") // 隐式调用,类似静态库但不同
using namespace std;
int main()
{
int a, b;
cout << "input 2 integer:";
cin >> a >> b;
// 调用
printf("%d + %d = %d", a, b, add(a, b));
return 0;
}
2.3、最后一步
1、在刚刚创建的文件夹下找到2.1步骤创建的testDLL文件夹下的testdll.cpp、testdll.h文件复制2.2步骤的test文件夹下
2、将2.1-7步骤生成解决方法时生成的testDLL.dll、testDLL.lib文件复制到2.2步骤的test文件夹下
3、在test项目中选中头文件——添加——现有项,在test项目文件夹下选中testdll.h文件
4、训中test右击——属性——链接器——常规——附加库目录,选择生成的Release文件。一路确定退出
5、选中test右击——生成,会在以下路径生成对应exe文件,
或者选中test右击——设为启动项目,然后选择调试——开始执行,输入111 333后Enter,出现如下结果,成功