VS DLL note - lianggx6/Tools GitHub Wiki
VS创建与引用DLL
生成DLL文件
- 创建项目
- 在VS中新建项目,选择Win32项目。

- 选择下一步

- 选择类型为DLL,点击完成

- 项目创建完成后,可以发现源文件中有一个dllmain文件,相当于一个出口和入口,其他的和普通项目没什么区别。
- 编辑代码
//Calculator类头文件
#include "stdafx.h"
/****************
将关键字_declspec (dllexport)定义为宏定义,
在导入DLL时,被该关键字修饰的方法或类可以被导入使用,
如下这个写法,是翻了诸多博客,尤其是微软官方社区的写法,
至于为何这么写,暂时还没搞明白
****************/
#define MAKEDLL_EXPORTS
#ifdef MAKEDLL_EXPORTS
#define MAKEDLL_API __declspec(dllexport)
#else
#define MAKEDLL_API __declspec(dllimport)
#endif
//创建一个Calculator类
class MAKEDLL_API Calculator
{
public:
Calculator();
int ADD(int x, int y);
int SUB(int x, int y);
};
// Calculator.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include "Calculator.h"
Calculator::Calculator()
{
cout << "constructor!" << endl;
}
int Calculator::ADD(int x, int y)
{
return x + y;
}
int Calculator::SUB(int x, int y)
{
return x - y;
}
- 生成dll,在项目右键点击生成,即可得到相应的dll和lib文件,再加上头文件即为我们需要的文件。
DLL的导入与使用
- 创建一个新的项目,导入DLL。
- 导入有隐式调用和显式调用,这里只讲隐式调用
- 首先将需要导入的dll文件对应的.h文件放到项目源文件目录下,或者修改:项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件.h所在的目录
- 项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件.lib所在的目录
- 项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“testdll.lib”(若有多个 lib 则以空格隔开)
- 编写代码如下所示,可成功调用
// TestDll.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Calculator.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
Calculator cal = Calculator();
int res1 = cal.ADD(1, 2);
cout << res1 << endl;
int res2 = cal.SUB(1, 2);
cout << res2 << endl;
system("pause");
return 0;
}