字体
第(2/5)页
关灯
   存书签 书架管理 返回目录
declspec(dllexport)的修饰符,表示输出。

    _declspec(dllexport)在C 调用约定、C 编译情况下可以去掉输出函数名的下划线前缀。extern

    "C"使得在C++中使用C 编译方式成为可能。在“C++”下定义"C"函数,需要加extern "C"

    关键词。用extern "C"来指明该函数使用C 编译方式。输出的"C"函数可以从"C"代码里调用。

    下面以具体示例作详细介绍。在一个C++文件中,有如下函数:

    extern "C" {void __declspec(dllexport) __cdecl Test(int var);}

    其输出函数名为Test。

    MFC 提供了一些宏,就有这样的作用。代码如下:

    AFX_CLASS_IMPORT:__declspec(dllexport)

    AFX_API_IMPORT:__declspec(dllexport)

    AFX_DATA_IMPORT:__declspec(dllexport)

    AFX_CLASS_EXPORT:__declspec(dllexport)

    AFX_API_EXPORT:__declspec(dllexport)

    AFX_DATA_EXPORT:__declspec(dllexport)

    AFX_EXT_CLASS: #ifdef _AFXEXT

    AFX_CLASS_EXPORT

    #else

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·266·

    AFX_CLASS_IMPORT

    AFX_EXT_API:#ifdef _AFXEXT

    AFX_API_EXPORT

    #else

    AFX_API_IMPORT

    AFX_EXT_DATA:#ifdef _AFXEXT

    AFX_DATA_EXPORT

    #else

    AFX_DATA_IMPORT

    像AFX_EXT_CLASS 这样的宏,如果用于DLL 应用程序的实现,则表示输出(因为

    _AFX_EXT 被定义,通常是在编译器的标识参数中指定该选项/D_AFX_EXT)。如果用于使

    用DLL 的应用程序中,则表示输入(_AFX_EXT 没有定义)。

    要输出整个的类,对类使用_declspec(_dllexpot);要输出类的成员函数,则对该函数使用

    _declspec(_dllexport)。代码如下:

    class AFX_EXT_CLASS CTextDoc : public CDoccomnt

    {

    ?

    }

    extern "C" AFX_EXT_API void WINAPI InitMYDLL();

    为了调用动态链接库的资源,新建了一个基于对话框的MFC 应用程序测试函数接口,

    测试的主要代码如下:

    void CTestDlg::OnOK()

    {

    // TODO: Add ex
上一页 目录 下一页