《c++dll篇》VS2015生成dll及调用
VS2015生成dll及调用
原文链接:https://blog.csdn.net/qq_20792765/article/details/109801411
创建DLL文件
创建的DLL文件包括三个文件(.h/.dll/.lib),
1、打开VS新建一个项目。
2、选择DLL,附加选项选择空项目
3、在头文件和源文件下分别添加如下文件
4、在头文件CaculatorDLL.h中添加如下代码(具体可以自己定义代码),最上面的宏定义判断何时用外部接口,何时用内部接口,实在不理解的照着用就好了。哈哈!
#ifdef PORT_STYLE
#else
#define PORT_STYLE _declspec(dllimport)//当编译时,头文件不参加编译,所以.cpp文件中先定义,后头文件被包含进来,因此外部使用时,为dllexport,而在内部编译时,则为dllimport
#endif
//绝对值加法
double PORT_STYLE AbsAdd(double add1, double add2);
//Caculator类
class PORT_STYLE Caculator
{
public:
//创建一个Cacualtor对象
Caculator();
//创建一个Cacualtor对象
Caculator(double x, double y);
//析构Cacualtor对象
~Caculator();
//加法
double Add(double x, double y);
//减法
double Sub(double x, double y);
//乘法
double Mult(double x, double y);
//除法
double Divi(double x, double y);
private:
double num1;
double num2;
};
5、在源文件CaculatorDLL.cpp中添加如下代码
#define PORT_STYLE _declspec(dllexport)
#include"CaculatorDLL.h"
double PORT_STYLE AbsAdd(double add1, double add2)
{
return add1 + add2;
}
Caculator::Caculator()
{
}
Caculator::Caculator(double x, double y)
{
num1 = x;
num2 = y;
}
Caculator::~Caculator()
{
}
double Caculator::Add(double x, double y)
{
return x + y;
}
double Caculator::Sub(double x, double y)
{
return x - y;
}
double Caculator::Mult(double x, double y)
{
return x*y;
}
double Caculator::Divi(double x, double y)
{
return x / y;
}
6、按照下图生成文件
7、在项目的Debug文件中生成如下文件
创建测试项目
1、打开VS创建一个新项目
2、生成一下项目,然后在项目所在文件夹内创建一个include文件夹,将1.7中CaculatorDLL.dll和CaculatorDLL.lib以及CaculatorDLL.h放入include文件夹内。
3、在将CaculatorDLL.dll文件放到TestDLL项目的Debug文件夹中。
4 配置环境,打开TestDLL项目的属性。
4.1 配置包含路径
4.2 配置库目录
4.3 配置附加依赖项
5 在TestDLL.cpp中添加如下代码
// TestDLL.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include"include\CaculatorDLL.h"
#include<iostream>
using namespace std;
int main()
{
Caculator myCaculator;
cout << AbsAdd(-1.23, 3.12) << endl;
cout << myCaculator.Add(1.2, 2.1) << endl;
cout << myCaculator.Sub(1.2, 2.1) << endl;
cout << myCaculator.Mult(1.2, 2.1) << endl;
cout << myCaculator.Divi(1.2, 2.1) << endl;
getchar();
return 0;
}
6 按F5得到如下结果,完毕!