首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库编程技术C/C++

VC中导出C++类的方法

减小字体 增大字体 作者:佚名  来源:转载整理  发布时间:2012-06-24 17:39:29

有时我们需要将在VC中定义的类导出来,以在其它地方使用,本文将使用一个例子来讲解具体的方法。

首先,使用Wizard创建一个Win32 Dynamic-Link Library工程,然后定义一个简单的C++类CInDLL.由于该类会被工程之外的文件所引用,所以需要对这个类进行引出。因为只有引出后所生成的DLL中才带有供足够的信息以在连接和运行时被正确引入到进程空间中。

有两种方法可以引出类,使用__declspec(dllexport)定义和使用定义文件。

下面先讲使用__declspec(dllexport)的方法:

将类定义改为:class __declspec(dllexport) CInDLL 就可以了。 这样产生的工程在编译时是正确的但是在使用时会产生错误,因为你包含的头文件中也是使用__declspec(dllexport),而使用这个DLL的工程中并没有引出这个类,而是需要引入这个类)在使用时需要将类定义改为class __declspec(dllimport) CInDLL就可以了。

使用定义文件可以有效的避免这个问题,这种方法是利用宏定义在不同的地方产生不同的编译代码:

在头文件中加入如下的代码:

#ifdef _CLASSINDLL
#define CLASSINDLL_CLASS_DECL __declspec(dllexport)
#else
#define CLASSINDLL_CLASS_DECL __declspec(dllimport)
#endif
#endif
 
// ClassInDLL_H

//将class __declspec(dllexport) CInDLL改为class CLASSINDLL_CLASS_DECL CInDLL{ CInDLL();……}

在实现这个类的CPP文件的顶部加入#define _CLASSINDLL语句。

#define _CLASSINDLLCInDLL::CInDLL(){}……

这样一来在使用这个类时就可以不做任何改动了。

Tags:VC C++

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3