WEB开发网
开发学院软件开发VC DLL(Dynamic Link Libraries)全面剖析 阅读

DLL(Dynamic Link Libraries)全面剖析

 2006-07-20 11:40:14 来源:WEB开发网   
核心提示: extern "C" EXPORT YourExportedFunction();如果没有 extern "C" 修饰,输出函数仅仅能从 C++ 代码中调用,DLL(Dynamic Link Libraries)全面剖析(4),DLL 应用程序从 C

extern "C" EXPORT YourExportedFunction();

如果没有 extern "C" 修饰,输出函数仅仅能从 C++ 代码中调用。

DLL 应用程序从 CWinApp 派生,但没有消息循环。

动态链接到 MFC 的 规则 DLL 应用程序里头的输出函数可以被任意 Win32 程序使用,包括使用 MFC 的应用程序。但是,所有从 DLL 输出的函数应该以如下语句开始:

AFX_MANAGE_STATE(AfxGetStaticModuleState( ))

此语句用来正确地切换 MFC 模块状态。

Regular DLL能够被所有支持 DLL 技术的语言所编写的应用程序所调用。在这种动态连接库中,它必须有一个从 CWinApp 继承下来的类,DLLMain 函数被 MFC 所提供,不用自己显式的写出来。

  • Extension DLL:用来实现从 MFC 所继承下来的类的重新利用,也就是说,用这种类型的动态连接库,可以用来输出一个从 MFC 所继承下来的类。它输出的函数仅可以被使用 MFC 且动态链接到 MFC 的应用程序使用。可以从 MFC 继承你所想要的、更适于你自己用的类,并把它提供给你的应用程序。你也可随意的给你的应用程序提供 MFC 或 MFC 继承类的对象指针。Extension DLL使用 MFC 的动态连接版本所创建的,并且它只被用 MFC 类库所编写的应用程序所调用。Extension DLLs 和 Regular DLLs 不一样,它没有从 CWinApp 继承而来的类的对象,所以,你必须为自己 DLLMain 函数添加初始化代码和结束代码。

    和规则 DLL 相比,有以下不同:

    1、它没有从 CWinApp 派生的对象;

    2、它必须有一个 DLLMain 函数;

    3、DLLMain 调用 AfxInitExtensionModule 函数,必须检查该函数的返回值,如果返回0,DLLMmain 也返回 0;

    上一页  1 2 3 4 5 6 7 8 9  下一页
  • Tags:DLL Dynamic Link

    编辑录入:爽爽 [复制链接] [打 印]
    赞助商链接