必威体育Betway必威体育官网
当前位置:首页 > IT技术

动态链接库的制作和使用

时间:2019-10-08 06:43:23来源:IT技术作者:seo实验室小编阅读:55次「手机版」
 

动态链接库

在编写动态链接库时,导出函数有两种指明方式,第一种是使用__declspec(dllexport)说明,第二种是使用 .def文件说明。

编译器在编译导出函数时会对其进行 名字改编同时根据 调用约定 改编函数名字

在调用动态链接库时,分为隐式调用即静态调用 和 显示调用即动态调用 两种方式。

在调用动态链接库时,还需对VS工程进行一些设置。

本文只对使用__declspec(dllexport)说明 和 隐式调用的情况进行总结。名字改编和调用约定不涉及。

目录

1.DLL的制作

2.DLL的调用

3.配置VS调用环境:

3.1 在同一解决方案下调用DLL

3.2 调用第三方DLL(隐式调用)


1.DLL的制作

1.建立DLL空工程,并向工程添加.h头文件和.cpp源文件

2.在头文件中输入如下代码


#ifdef DLL_IMPLEMENT
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif

namespace zdd
{
	//导出类
	class DLL_API SimpleDll
	{
	public:
		SimpleDll();
		~SimpleDll();

		int add(int x, int y); //简单方法
		float add(float a, float b);
		int sub(int a, int b);
		float sub(float a, float b);
	};
}

使用该宏在dll项目内部使用__declspec(dllexport)导出,在dll项目外部使用时,用__declspec(dllimport)导入。宏DLL_IMPLEMENT在xx.cpp源文件中定义。

3.在源文件中输入如下代码:


#define DLL_IMPLEMENT 

#include "DLLA.h"

namespace zdd
{
	SimpleDll::SimpleDll()
	{

	}

	SimpleDll::~SimpleDll()
	{

	}

	int SimpleDll::add(int x, int y)
	{
		return x + y;
	}
	
	float SimpleDll::add(float a, float b)
	{
		return a + b;
	}

	int SimpleDll::sub(int a, int b)
	{
		return a - b;
	}

	float SimpleDll::sub(float a, float b)
	{
		return a - b;
	}

}

注意此处的宏定义需要写在#include "DLLA.h"之前,以完成在dll项目内部使用__declspec(dllexport)导出,在dll项目外部使用时,用__declspec(dllimport)导入的功能。

4.build工程,生成 .lib 和 .DLL 文件。

2.DLL的调用

1.新建调用DLL的主程序

2.在源文件中输入如下代码:

#include<iOStream>
#include "../DLLA/DLLA.h"//dll的头文件。

using namespace std;

int main()
{
	int a = 3, b = 4;
	float x = 3.0f, y = 4.5f;

	zdd::SimpleDll simple;
	cout << simple.add(a, b) << endl;
	cout << simple.add(x, y) << endl;

	cout << simple.sub(a, b) << endl;
	cout << simple.sub(x, y) << endl;
	
	
	system("pause");
	return 0;
}

3.此时已写好了调用程序,但是如果编译会出现链接错误。通过配置VS工程可以正确调用DLL。配置方式如下

3.配置VS调用环境:

主要工作:添加头文件目录,添加lib文件目录,将.dll文件与.exe文件放于同一目录下。 

3.1 在同一解决方案下调用DLL

  1. 将DLL的头文件复制到主程序工程目录下,并添加到主程序工程中,并在主函数中包含此头文件。
  2. 在主程序工程属性中添加DLL工程的引用。

这样在编译主工程时会先编译DLL工程。

3.2 调用第三方DLL(隐式调用)

  1. 必须提供DLL对应的三个文件分别是:xx.h,xx.lib,xx.dll。
  2. 将xx.dll放在生成.exe的目录下。
  3. 隐式调用
  •  添加DLL头文件所在目录并在源文件中添加包含头文件:
  • 添加.lib文件所在目录:
  • 引用xx.lib文件
  • 上述2.3步也可以用如下代码代替:

    #pragma comment(lib, "simpleDLL/DLLA.lib")

    此段代码应该放置在主函数之前。

相关阅读

Axure教程:明日之子投票界面交互动效制作

最近在追明日之子每天疯狂给妹妹点赞,所以尝试下投票界面的制作,分享给大家,这是我发布的第一篇文章,欢迎各位产品前辈批评指正!预览效

《基础网页制作》一个超简单的div布局,制作静态网页很

DIV界面布局 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Div布局</title> </head> <body> <!-整个p布局大

在excel2013中制作下拉菜单的方法

在使用excel2013编辑表格的时候,有时候我们需要输入很多相同内容,这时候就可以使用单元格的下拉菜单功能,利用数据有效性来完成方便

M3U文件制作与视频播放器播放M3U

M3U本质上说不是音频文件,它是音频文件的列表文件,是纯文本文件。你下载下来打开它,播放软件并不是播放它,而是根据它的记录找到网络

如何制作专题地图集

你可能看到过类似下图的地图,作为一个GISer,有没有想过这些图是怎么做出来的。对ArcMap也很熟悉了,但是看到这些地图,第一感觉是用PS

分享到:

栏目导航

推荐阅读

热门阅读