[DLL]在非MFC扩展Dll中导出类的简单例子

创建新的动态链接库Dll项目

1.创建静态项目MathFunDll:

选择 win32项目->输入MathFunDll项目名称->下一步->选择DLL;选择附加选项的空项目->完毕。(当然也可以不选择附加选项空项目)

2.向动态库添加类MyMathFun:

MyMathFun.h

#pragma once

// #ifdef DLLCLASS_API
// #define DLLCLASS_API _declspec(dllimport)
// #else
// #define DLLCLASS_API _declspec(dllexport) 
// #endif

#define DLLCLASS_API _declspec(dllexport)
class DLLCLASS_API MyMathFun
{
public:
	MyMathFun(void);
	~MyMathFun(void);
	double Add(double a,double b);
	double Substract(double a,double b);
	double Multiply(double a,double b);
	double Divide(double a,double b);
};


MyMathFun.cpp

#include "MyMathFun.h"

#include <stdexcept>
using namespace std;
MyMathFun::MyMathFun(void)
{
}
MyMathFun::~MyMathFun(void)
{
}
double MyMathFun::Add(double a,double b)
{
	return a+b;
}
double MyMathFun::Substract(double a,double b)
{
	return a-b;
}
double MyMathFun::Multiply(double a,double b)
{
	return a*b;
}
double MyMathFun::Divide(double a,double b)
{
	if (b==0)
	{
		throw new invalid_argument("b cannot be zero!");
	}
	return a/b;
}

创建引用动态链接库的应用程序

1.创建引用动态链接库的控制台应用程序:

在同一个解决方案中添加项目MyExecRefsDll:选择 win32控制台应用程序->输入MyExecRefsDll项目名称->下一步->选择控制台应用程序;选择附加选项的空项目->完毕

2.1添加头文件目录,以便程序中包含的头文件存在(即可以找到):

项目,属性->C/C++->常规->附加包含目录:..\MathFunDll

或者是:项目属性->VC++目录->包含目录:..\MathFunDll

2.2添加.Dll文件引用

项目,引用->通用属性->框架和引用->添加引用->会出现MathFuncsDll的项目名称和项目目录->确定

或者是,添加库目录及附加库:项目,属性->连接器->常规->附加库目录:如$(OutDir)

                                                   项目,属性->连接器->输入->附加依赖项:MathFunDll.lib

                                                   且MathFunDll.dll必须与MyExecRefsDll.exe文件在同一个目录 

#include <iostream>
using namespace std;
//当使用添加头文件目录,以便程序中包含的头文件存在(即可以找到):
//1.项目,属性->C/C++->常规->附加包含目录:..\MathFunDll
//2.#include "MyMathFun.h"   就可以省略下面的类的再次声明了
#define DLLCLASS_API _declspec(dllimport)
class DLLCLASS_API MyMathFun
{
public:
	MyMathFun(void);
	~MyMathFun(void);
	double Add(double a,double b);
	double Substract(double a,double b);
	double Multiply(double a,double b);
	double Divide(double a,double b);
};
void main()
{
	MyMathFun* mFun=new MyMathFun();
	cout<<mFun->Add(1,2)<<endl;//3
	cout<<mFun->Substract(3,4)<<endl;//-1
	cout<<mFun->Multiply(5,6)<<endl;//30
	cout<<mFun->Divide(7,8)<<endl;//0.875
}


   注:此文与 创建和静态使用动态链接库dll 这篇文章几乎是一样的。

你可能感兴趣的:([DLL]在非MFC扩展Dll中导出类的简单例子)