您的位置:首页 > 其它

如何制作DLL接口及使用

2016-12-19 17:25 162 查看
lib(英文全称:library)分为两种:

静态库:这种lib中有函数的实现代码,一般用在静态链接上,它是将lib中的代码加入目标模块(exe或者dll)文件中,所以链接好了之后,lib文件就没有用了。
一种LIB是和DLL配合使用的,包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。这种LIB是用在静态调用DLL上的,所以起的作用也是链接作用,链接完成了,LIB也没用了。至于动态调用DLL的话,根本用不上LIB文件。
目标模块(EXE或者DLL)文件生成之后,就用不着LIB文件了。

那么如何制作dll并如何使用呢?

测试环境:VS2013  Visual C++

MakeDll:

1、新建项目->Win32项目(项目名称为MakeDll)->应用程序类型:DLL->完成

2、添加源文件MakeDll.cpp和头文件MakeDll.h

MakeDll.cpp

// MakeDll.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "MakeDll.h"
DLL_API int add(int a, int b)
{
return a + b;
}

Point::Point()
{
x = 0.0f;
y = 0.0f;
}
void Point::SetPoint(float x, float y)
{
this->x = x;
this->y = y;
}
void Point::DisPlay()
{
cout << "x= " << x << endl;
cout << "y= " << y << endl;
}


MakeDll.h

#define DLL_API __declspec(dllexport)

#include<iostream>

using namespace std;

DLL_API int add(int a, int b);

class DLL_API Point
{
private:
float x, y;

public:
Point();

void SetPoint(float a, float b);
void DisPlay();
};


3、编译生成,在工程目录下就会生成Debug的目录,在Debug目录下生成我们所需要的dll和lib库

至此,我们已经完成了dll的制作。

UseDll:

使用Dll时,我们需要在制作dll时生成的MakeDll.dll和MakeDll.lib,以及MakeDll.h

1、新建项目->空项目(项目名称:UseDll)

2、在工程目录下新建include目录和lib目录,分别将MakeDll.h和MakeDll.lib拷贝至这两个目录下。

3、配置工程属性如下:

配置属性-> C/C++ -> 常规 :附加包含目录:.\include

配置属性->链接器 ->  常规 :附加库目录:.\lib

4、添加源文件main.cpp。

main.cpp

#include <iostream>
#include "MakeDll.h"

//#define DLL_API __declspec(dllimport)  //可注释
#pragma comment(lib,"MakeDll.lib")

using namespace std;

int main()
{
Point p1, p2;
p2.SetPoint(5.6f, 7.8f);
p1.DisPlay();
p2.DisPlay();
cout << "5+6 = " << add(5, 6) << endl;
system("pause");
return 0;
}


5、编译生成Debug目录(含exe),将MakeDll.dll拷贝至该目录下,便可运行。

参考博文:

VS2013创建dll动态链接库文件心得

例程下载:

如何制作DLL及使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Dll VS2013