通过DLL导出类指针来传递及使用对象

本文介绍了如何在Windows DLL开发中通过导出类指针来稳定地传递和使用对象,以解决不同编译器或内存堆可能导致的问题。通常,Win32 API和COM接口不直接传递对象,而是依赖于基本数据类型。文中提供了一种方法,通过传递对象指针(作为基本数据类型)来实现DLL中的对象使用,确保稳定性。并详细说明了创建DLL项目、添加头文件以及单例模板的使用,以管理对象生命周期。
摘要由CSDN通过智能技术生成

DLL开发是windows编程中经常用到的一种技术。从DLL中可以导出函数、变量、还有类。这个通过VS的win32应用程序向导生成一个win32DLL(附加选项选中【导出符号】),生成的代码有相应示例。但是,在实际开发过程中,我们会发现从DLL中导出类是件不太靠谱的事情。原因可能是DLL和调用DLL的应用程序是用不同编译器或者编译器的不同版本,也可能是DLL和应用程序使用的内存堆不一样。总之,使用DLL传递对象不是一件稳定的事情。

再说,我们也没见过Win32API和COM接口直接传递对象出来不是?我们能确定可以稳定传递的只有基本数据类型。

但是有时候,我们又需要直接使用DLL里面的对象,怎么办?这中情况下,可以进行一些转换,通过传递指针的方式来使用DLL里的对象。毕竟指针也是基本数据类型。这也是COM接口传递对象的方式。接口的具体实现也有不同的方式,这里就来举个例,实现一种。

首先,在任意现有的解决方案中添加一个WIN32 DLL项目。项目名称就叫w3 。如图1、图2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值