概述
在学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中声明的类和它的成员函数了。
最后
以上就是懵懂黑米为你收集整理的把C++类做成dll的全部内容,希望文章能够帮你解决把C++类做成dll所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复