把C++类做成dll

来源:互联网 发布:linux保存文件命令 编辑:程序博客网 时间:2024/04/28 10:14
 

在学windows程序设计时,学会了把函数做成动态链接库。学完C++后,也想过把类做成dll,但当时一直认为只能导出函数,怎么可能导出一个类呢。网上一查确实可以把C++类做成dll,冷静一分析,感觉这样做成的dll肯定也是利用以前导出单个函数一样的技术。毕竟类里的函数与类外的全局函数在编译后是一样的,只不过类里的函数多了一个this指针。按这样的道理,如果把一个类导出来,那类里的全部函数都会导出来,不管公有,保护还是私有。利用pe查看工具一看,果然如此。得到一个结论,看来这样做成的dll与com技术做成的dll完全不同。

如果已经写好了一个C++的类,希望把它做成dll动态链接库,这里介绍一种简单的方法。 
利用VC6新建工程时选择win32 dynamic-Link Library,然后添加头文件和cpp文件。假设类名为exp,添加头文件exp.h,头文件中声明类的定义,添加exp.cpp,其中是成员函数的具 体定义。与一般写类的定义不同,在exp.h中需要写成
class __declspec(dllexport) exp
{

}
从而说明以后从dll要被导出的类是哪一个。这样编译完就会产生exp.dll和exp.lib两个文件。

      当已经生成dll后,可以在其它程序中调用dll中的类和成员函数。方法如下:
      a)把exp.dll和exp.lib复制到调用程序的执行路径下,注意不是debug路径下。
      b)在project->setting->link里添加exp.lib
      c)把exp.h复制到调用程序的执行路径下,将__declspec(dllexport)改成__declspec(dllimport)
     这样在主程序中就可以使用exp.h中声明的类和它的成员函数了。

原创粉丝点击