VS DLL note

github原文链接(welcome give me a star on github):
https://github.com/lianggx6/Tools/wiki/VS-DLL-note

VS创建与引用DLL

生成DLL文件

  1. 创建项目
  • 在VS中新建项目,选择Win32项目。
  • 选择下一步
  • 选择类型为DLL,点击完成
  • 项目创建完成后,可以发现源文件中有一个dllmain文件,相当于一个出口和入口,其他的和普通项目没什么区别。
  1. 编辑代码
  • 创建头文件,并在里边创建类定义如下所示:
//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);
};

  • 编辑cpp文件,实现头文件中定义的类
// 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;
}

  1. 生成dll,在项目右键点击生成,即可得到相应的dll和lib文件,再加上头文件即为我们需要的文件。

DLL的导入与使用

  1. 创建一个新的项目,导入DLL。
  • 导入有隐式调用和显式调用,这里只讲隐式调用
  • 首先将需要导入的dll文件对应的.h文件放到项目源文件目录下,或者修改:项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件.h所在的目录
  • 项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件.lib所在的目录
  • 项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“testdll.lib”(若有多个 lib 则以空格隔开)
  1. 编写代码如下所示,可成功调用
// 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;
}

猜你喜欢

转载自blog.csdn.net/lianggx6/article/details/87903759
今日推荐