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

来源:互联网 发布:windows安全模式怎么进 编辑:程序博客网 时间:2024/06/01 10:30

使用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分钟的事。






1 0
原创粉丝点击