[DLL]创建和静态使用动态链接库dll

使用Dll是一种重用代码的绝佳方式。 官网实例

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

1.创建静态项目MathFucsDll:

选择 win32控制台应用程序->输入MathFuncsDll项目名称->下一步->选择DLL;选择附加选项的空项目->完毕

2.向动态库添加类MyMathFuncs:

#pragma  once
//MathFuncsDll.h
namespace MathFuncs
{
	class MyMathFuncs
	{
	public:
		static _declspec(dllexport) double Add(double a,double b);
		static _declspec(dllexport) double Substract(double a,double b);
		static _declspec(dllexport) double Multiply(double a,double b);
		static _declspec(dllexport) double Divide(double a,double b);
	};
}

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

3.确认生成的是dll文件:项目,属性->配置属性,常规->配置类型:改为静动态库(.dll);编译生成MathFuncsDll.lib和MathFuncsDll.dll

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

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

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

2.在应用程序中使用动态链接库的功能

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

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

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

2.2添加.Dll文件引用

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

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

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

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

3.程序使用

#include "MathFuncsDll.h"
#include <iostream>
using namespace std; 
int main()
{
	double a=7.4;
	int b=99;
	cout<<"a + b="<<MathFuncs::MyMathFuncs::Add(a,b)<<endl;
	cout<<"a - b="<<MathFuncs::MyMathFuncs::Substract(a,b)<<endl;
	cout<<"a * b="<<MathFuncs::MyMathFuncs::Multiply(a,b)<<endl;
	cout<<"a / b="<<MathFuncs::MyMathFuncs::Divide(a,b)<<endl;
	return 0;
}

4.设置MyExecRefsDll为启动项目,按Ctrl+F5

比较Dll与Lib创建,引用过程中的不同

创建过程中的不同:Dll项目中的成员函数前添加了_declspec(dllexport),其生产~.lib和~.dll两者文件,而lib项目中只生产了~.lib文件

引用过程中的不同:Dll项目引用的过程与Lib项目引用的过程几乎完全一样(设置.h,.lib文件目录,和附加lib文件),唯一小小的区别就是:dll项目中生产的dll文件必须与引用者的.exe文件在同一个目录,而lib项目中却没有生产dll文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值