DLL文件分为普通函数和导出类,而dll的加载分为隐式加载和显示加载。下面分别介绍如何创建、
加载、使用普通函数和导出类。
图片镇贴。
一、生成普通导出函数
创建testFunc.h
创建testFunc.cpp
然后编译生成dll和lib文件。ok,普通的导出函数创建成功。
特别说明:
在编译链接时,C++会按照自己的规则来篡改导出的函数名称,这一过程叫做"名字改编"。该过程导致的问题就是不同编译器生成的dll,在别的编译器使用时会导致不识别,为了保证导出的函数名称不改变,需要加上限定符:
extern "C"。 因此应该是extern "C" _declspec(dlloexport)
二、生成导出类
导出类区别于普通类就是多了导出标识,相应的权限并没有改变。该是public的还是公有,privated仍是私有。
创建testClass.h(在这里我把类的实现也写在了头文件中,方便展示)
编译生成dll和lib文件。ok,导出类也生成了,是不是很简单呢。
三、隐式加载和使用dll文件(以vs2012为例)
新建main.cpp
(1)右键项目-"属性"-"附加库目录",把lib所在的目录添加进来
(2)右键项目-"属性"-"连接器"-"附加依赖项",添加要使用的Lib成的.lib,比如testFunc.lib
ok,隐式调用成功。说明一点,在项目中手动写入lib不够方便,那么可以去掉第(2)步,在main.cpp中手动载入
#pragma comment(lib,testFunc.lib)
对于导出类也是如此,需要在调用的文件中显式的给出类的结构声明,然后调用就OK。
同时,也可以不导出整个类,只导出部分函数。如下: