我看msdn时看不打懂,请懂行的人帮我解释一下。谢谢!!!

解决方案 »

  1.   

    from MSDN:Visual C++ 概念:添加功能   使用 __declspec(dllexport) 从 DLL 导出
    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) 的用法示例。