文章类型: VC&C++
关键词: 在非MFC扩展Dll中导出类的简单例子
内容摘要: 在非MFC扩展Dll中导出类的简单例子

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

2016/8/22 14:52:09    来源:apple    阅读:

创建新的动态链接库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
	int i = 0;
	cin >> i;//pause test
}

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

↑ 上一篇文章:十招教你从程序员转向企业家 关键词:作业,工作,创业,程序员,编程 发布日期:2016/8/22 14:09:34
↓ 下一篇文章:创建和静态使用动态链接库dll 关键词:创建,静态,使用动态链接库,dll,win32编程 发布日期:2016/8/22 15:16:00
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......