- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++_MFC_DLL动态链接库编写详解.txt我很想知道,多少人分开了,还是深爱着。ゝ自己哭自己笑自己看着自己闹。你用隐身来躲避我丶我用隐身来成全你!待到一日权在手,杀尽天下负我狗。 本文由liupeng971321贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
VC++ MFC DLL 动态链接库编写详解 虽然能用 DLL 实现的功能都可以用 COM 来替代, DLL 的优点确实不少, 但 它更容易创建。 本文将讨论如何利用 VC MFC 来创建不同类型的 DLL,以及如何使用他们。 一、DLL 的不同类型 使用 VC++可以生成两种类型的 DLL:MFC 扩展 DLL 和常规 DLL。常规 DLL 有可以分为 动态连接和静态连接。Visual C++还可以生成 WIN32 DLL,但不是这里讨论的主要对象。 1、MFC 扩展 DLL 每个 DLL 都有某种类型的接口:变量、指针、函数、客户程序访问的类。它们的作用是让 客户程序使用 DLL,MFC 扩展 DLL 可以有 C++的接口。也就是它可以导出 C++类给客户 端。导出的函数可以使用 C++/MFC 数据类型做参数或返回值,导出一个类时客户端能创建 类对象或者派生这个类。同时,在 DLL 中也可以使用 DLL 和 MFC。 Visual C++使用的 MFC 类库也是保存在一个 DLL 中,MFC 扩展 DLL 动态连接到 MFC 代 码库的 DLL,客户程序也必须要动态连接到 MFC 代码库的 DLL。 (这里谈到的两个 DLL, 一个是我们自己编写的 DLL,一个装 MFC 类库的 DLL)现在 MFC 代码库的 DLL 也存在 多个版本,客户程序和扩展 DLL 都必须使用相同版本的 MFC 代码 DLL。所以为了让 MFC 扩展 DLL 能很好的工作,扩展 DLL 和客户程序都必须动态连接到 MFC 代码库 DLL。而这 个 DLL 必须在客户程序运行的计算机上。 2、常规 DLL 使用 MFC 扩展 DLL 的一个问题就是 DLL 仅能和 MFC 客户程序一起工作,如果需要一个 使用更广泛的 DLL,最好采用常规 DLL,因为它不受 MFC 的某些限制。常规 DLL 也有缺 点:它不能和客户程序发送指针或 MFC 派生类和对象的引用。一句话就是常规 DLL 和客 户程序的接口不能使用 MFC,但在 DLL 和客户程序的内部还是可以使用 MFC。 当在常规 DLL 的内部使用 MFC 代码库的 DLL 时,可以是动态连接/静态连接。如果是动态 连接,也就是常规 DLL 需要的 MFC 代码没有构建到 DLL 中,这种情况有点和扩展 DLL 类 似,在 DLL 运行的计算机上必须要 MFC 代码库的 DLL。如果是静态连接,常规 DLL 里面 已经包含了需要的 MFC 代码,这样 DLL 的体积将比较大,但它可以在没有 MFC 代码库 DLL 的计算机上正常运行。 二、建立 DLL 利用 Visual C++提供的向导功能可以很容易建立一个不完成任何实质任务的 DLL, 这里就不 多讲了,主要的任务是如何给 DLL 添加功能,以及在客户程序中利用这个 DLL 1、导出类 用向导建立好框架后,就可以添加需要导出类的.cpp .h 文件到 DLL 中来,或者用向导创建 C++ Herder File/C++ Source File 。 为 了 能 导 出 这 个 类 , 在 类 声 明 的 时 候 要 加 “_declspec(dllexport)”,如: class _declspec(dllexport) CMyClass { ……//声明 } 如果创建的 MFC 扩展 DLL,可以使用宏:AFX_EXT_CLASS: class AFX_EXT_CLASS CMyClass { ……//声明
} 这样导出类的方法是最简单的,也可以采用.def 文件导出,这里暂不详谈。 2、导出变量、常量、对象 很多时候不需要导出一个类,可以让 DLL 导出一个变量、常量、对象,导出它们只需要进 行简单的声明:_declspec(dllexport) int MyInt; _declspec(dllexport) extern const COLORREF MyColor=RGB(0,0,0); _declspec(dllexport) CRect rect(10,10,20,20); 要导出一个常量时必须使用关键字 extern,否则会发生连接错误。 注意: 如果客户程序识别这个类而且有自己的头文件, 则只能导出一个类对象。 如果在 DLL 中创建一个类,客户程序不使用头文件就无法识别这个类。 当导出
您可能关注的文档
最近下载
- 《解析几何》教案--吕林根,许子道.pdf
- 美国加州桥梁抗震caltrans seismic design criteria vlysis.pdf VIP
- 2025云南省临沧市市级单位公开遴选(选调)工作71人笔试参考题库附答案解析.docx VIP
- HSE保障措施优化及实施方案研究.docx VIP
- 2025甘肃省公路交通建设集团武仙公路收费运营人员招聘61人笔试模拟试题及答案解析.docx VIP
- 2025年秋新鲁科版英语四年级上册全册课件.pptx
- 颚式破碎机技术参数.docx VIP
- 2024河南资本集团“方舟”第三批招聘41人笔试参考题库附带答案详解.pdf
- 《时尚配饰设计》课件.ppt VIP
- 高边坡专家论证PPT汇报材料(中建).ppt VIP
文档评论(0)