您的位置:首页 > 编程语言 > C语言/C++

用C++创建属于自己的类库?

2016-01-20 12:58 357 查看
使用Visual Studio 2013创建类库,然后加载类库

目的:vs环境下用C++如何创建属于自己的类库和加载使用自己的类库。

概念介绍:

DLL:一个包含有 函数,类,变量 定义和实现的代码和数据的库。(在程序运行可以动态的链接,这样一个多个程序使用同一个Dll中的内容,不要进行反复复制。)

Lib:第一种:静态链接库(Static Library);第二种:导入文件(Import Library)。

静态链接库是是在编译的时候和可执行程序打包到一起的,lib中包含函数和类的实现,这是静态链接库。(它是目标对象obj的集合)

DLL在导出时,有时没有lib文件,有时有lib文件,而存在的这种lib文件就是导出文件,到出库。这样的(lib),导入文件,包含DLL导出的函数和变量的符号名,而真实的函数的实现和数据存在于DLL。

C++的dllexport和dllimport__declspec(dllexport)

__declspec(dllexport)

声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类

__declspec(dllimport)

声明一个导入函数,是说这个函数是从别的DLL导入。我要用。一般用于使用某个dll的exe中 不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所以能够生成更好的代码,是因为它可以确定函数是否存在于 DLL 中,这使得编译器可以生成跳过间接寻址级别的代码,而这些代码通常会出现在跨 DLL 边界的函数调用中。但是,必须使用 __declspec(dllimport)
才能导入 DLL 中使用的变量。

为什么叫导入文件,就是把Dll中导出的函数,类给导入到我们自己的应用程序中使用。

使用方法:

1、静态链接库(lib),我们使用隐式链接;

2、动态链接库(DLL),不包含lib导入文件,我们用显式链接。但是这样会很麻烦,我不喜欢这样用,我会想尽方法让它带有lib文件。

3、动态链接库(DLL),包含lib导入文件,我们使用 隐式链接。

看到了吧,我的主张是使用隐式链接。我的实验就是使用隐式链接。

下面看完整的截图:

步骤一:创建DLL的过程:







步骤二:学习这里面的书写格式,和添加自己的代码(学会后自己创建,或者直接子啊里面修改)









补充一下:在写之前,请了解__declspec(dllexport)  __declspec(dllimport)的作用。

上面的生成一下,我不再截图。



步骤三:实验

(我这属于静态加载,上面我说了)。

1、main中添加头文件;

2、加载lib;

3、使用。  





实验中的其它工具的使用截图:









这个实验我又是尝试了很多次,好几天,真的非常的没有意义,其实只需要最多5分钟的事。



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