登陆 | 免费注册(只需一分钟) | 会员中心

聚宝网   购物专题 基金专题 性专题 饮食专题 教育专题 生活大参考 园林资讯 园艺库 健康专题
  论文专题 家庭养花 园林景观 盆景奇石 激情图库 农业资料库 园林古建 英文站 花卉栽培

聚宝网免费为您提供 最新IT资讯

 

首页 > 编程文档 > C++
怎样导出一个类
时间:2007-06-17  www.jubao163.com  来源: 不详

在dll中如何导出一个类,并且在其他exe中导入这个类,有没有这方面的的例子
---------------------------------------------------------------

Microsoft 在 Visual C++ 的 16 位编译器版本中引入了 __export,使编译器得以自动生成导出名并将它们放到一个 .LIB 文件中。然后,此 .LIB 文件就可以像静态 .LIB 那样用于与 DLL 链接。

在 32 位编译器版本中,可以使用 __declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。__declspec(dllexport) 将导出指令添加到对象文件,因此您不需要使用 .DEF 文件。

当试图导出 C++ 修饰函数名时,这种便利最明显。对名称修饰没有标准规范,因此导出函数的名称在不同的编译器版本中可能不一样。如果使用 __declspec(dllexport),仅当解决任何命名约定更改时才需要重新编译 DLL 和依赖 .EXE 文件。

许多导出指令(如序号、NONAME 和 PRIVATE)只能在 .DEF 文件中创建,并且没有不使用 .DEF 文件指定这些属性的方法。不过,在 .DEF 文件的基础上另外使用 __declspec(dllexport) 不会导致生成错误。

若要导出函数,__declspec(dllexport) 关键字必须出现在调用约定关键字的左边(如果指定了关键字)。例如:

__declspec(dllexport) void __cdecl Function1(void);
若要导出类中的所有公共数据成员和成员函数,关键字必须出现在类名的左边,如下所示:

class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };
生成 DLL 时,通常创建一个包含正在导出的函数原型和/或类的头文件,并将 __declspec(dllexport) 添加到头文件中的声明。若要提高代码的可读性,请为 __declspec(dllexport) 定义一个宏并对正在导出的每个符号使用该宏:

#define DllExport   __declspec( dllexport ) 
__declspec(dllexport) 将函数名存储在 DLL 的导出表中。如果希望优化表的大小,请参见按序号而不是按名称从 DLL 导出函数。

注意   将 DLL 源代码从 Win16 移植到 Win32 时,用 __declspec(dllexport) 替换 __export 的每个实例。
作为参考,在 Win32 WINBASE.H 头文件中搜索。它包含 __declspec(dllimport) 的用法示例。

您希望做什么?
使用 .DEF 文件从 DLL 导出 
使用 AFX_EXT_CLASS 导出和导入 
导出 C++ 函数以用于 C 语言可执行文件 
导出 C 函数以用于 C 或 C++ 语言可执行文件 
确定要使用的导出方法 
使用 __declspec(dllimport) 导入到应用程序 
初始化 DLL 
您想进一步了解什么?
__declspec 关键字 
导入和导出内联函数 
相互导入 
如何从 DLL 导出数据 
如何与应用程序或其他 DLL 共享我的 DLL 中的数据 
请参见
从 DLL 导出


---------------------------------------------------------------

用MFC提供的扩展DLL,加上AFX_EXT_CLASS 声明如下
class AFX_EXT_CLASS CMyControlBar : public CControlBar
{
}




推荐文章
联盟网站

浙ICP备 :07003766号 Copyright © 2001-2007 JUBAO163,All rights reserved.