![]() |
购物专题 | 基金专题 | 性专题 | 饮食专题 | 教育专题 | 生活大参考 | 园林资讯 | 园艺库 | 健康专题 | |
| 论文专题 | 家庭养花 | 园林景观 | 盆景奇石 | 激情图库 | 农业资料库 | 园林古建 | 英文站 | 花卉栽培 |
在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. |