C++ dll,c++写dll库

  C++ dll,c++写dll库

  a、非MFCDLL:指没有MFC的类库结构,直接用C语言编写的DLL。它的输出函数一般使用标准的C接口,可以被非MFC或MFC编写的应用程序调用。

  B.RegularDLL:和下面的ExtensionDlls一样,是用MFC类库写的。明显的特点是源文件中有一个继承CWinApp的类。可以细分为静态连接MFC和动态连接MFC。

  静态连接MFC动态连接库只有专业版和企业版的VC支持。这个类似DLL的应用程序中的输出函数可以被任何Win32程序使用,包括使用MFC的应用程序。输入函数具有以下形式:

  extern c exportyourrexportedfunction();

  没有extern“C”修饰,输出函数只能从C代码调用。

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

  动态链接到MFC的常规DLL应用程序中的输出函数可由任何Win32程序使用,包括使用MFC的应用程序。但是,DLL的所有函数输出都应该以下面的语句开始:

  AFX _ MANAGE _ STATE(AfxGetStaticModuleState())

  该语句用于正确切换MFC模块状态。

  用支持DLL技术的所有语言编写的应用程序都可以调用RegularDLL。在这个动态链接库中,它必须有一个继承自CWinApp的类,而DllMain函数是MFC提供的,所以不需要显式编写。

  c,ExtensionDLL:用来实现继承自MFC的类的重用,也就是说,这种类型的动态连接库可以用来输出一个继承自MFC的类。它的输出函数只能由使用MFC并动态链接到MFC的应用程序使用。你可以从MFC中继承你想要的更适合自己使用的类,提供给你的应用。你也可以随意提供MFC或MFC继承类对象指针给你的应用程序。ExtensionDLL是使用MFC的动态连接版本创建的,它只被用MFC类库编写的应用程序调用。与RegularDLLs不同,ExtensionDLLs没有从CWinApp继承的类对象,所以必须为DllMain函数添加初始化代码和结束代码。

  与常规dll相比,有以下不同之处:

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

  2.它必须有一个DllMain函数;

  3.DllMain调用AfxInitExtensionModule函数,必须检查该函数的返回值。如果它返回0,DLLMAIN也返回0;

  4.如果它想要输出CRuntimeClass类型的对象或资源,它需要提供一个初始化函数来创建一个CDynLinkLibrary对象。而且,需要输出初始化函数;

  5.使用扩展DLL的MFC应用程序必须有一个从CWinApp派生的类。而且一般扩展DLL的初始化函数都是在InitInstance中调用的。

  参考:http://bbs.csdn.net/topics/80315152

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windows10缺少dll文件,win10运行时出错无法找到指定dll库文件
  • ,,详解VS2019 dumpbin查看DLL的导出函数
  • ,,解决采集时出现msxml3.dll 错误的方法
  • ,,使用 JScript 创建 .exe 或 .dll 文件的方法
  • ,,VC++ loadlibrary()加载三方dll失败, 返回错误码-126的解决方法
  • .net dll加密,c++ dll 反编译
  • .net dll加密,c++ dll 反编译,保护.net中的dll文件方法(防止破解、反编译dll)
  • .dll是什么文件能不能删除,文件dll怎么删除
  • dll没有在指定的windows上运行,xlivedll没有在windows上运行
  • 删除linkinfo.dll操作无法完成,因为已经在打开,linkinfo.dll是病毒吗
  • python能封装成dll文件吗,python自己封装的类怎么调用
  • 无法定位序数4445于动态链接库libcurl.dll,无法定位序数4445于动态链接库
  • d3dx9-43.dll文件丢失,d3dx9_41.dll文件丢失
  • igfxsrvc.exe木马病毒,igfxsrvc.dll加载失败_1
  • 怎么用360修复dll文件,360 dll文件修复
  • 留言与评论(共有 条评论)
       
    验证码: