首页 / 知识
指向指针托管的C ++的指针
2023-04-13 04:17:00

Pointer to Pointer Managed C++我有一个旧的C库,其中的函数需要一个void **:
我正在尝试从托管C ++调用此函数(m_pStuff是void *类型的父引用类的成员):
这给了我来自Visual Studio的以下错误:
我猜编译器正在将void *成员指针转换为背后的cli :: interior_ptr。 有关如何执行此操作的任何建议? 编辑:固定答案,请参阅下文。 确实,您需要了解pStuff将要使用的oldFunction。如果pStuff是指向某些非托管数据的指针,则可以尝试使用以下命令包装m_pStuff的定义:
这将使指针变为非托管指针,然后可以将其传递给非托管函数。当然,您将无法直接将任何托管对象分配给此指针。 从根本上说,非托管指针和托管指针是不一样的,并且如果没有某种复制基础数据的粘合代码就无法进行转换。基本上,托管指针指向托管堆,并且由于这是垃圾回收,因此它们指向的实际内存地址可能会随时间变化。未经托管的指针不会更改内存地址,除非您明确地这样做。 请注意,您不能在类定义内定义非托管/托管。但是此测试代码似乎可以正常工作:
在这里,我首先将指针从托管对象中复制出来,然后将其传递给oldFunction。然后,我将结果(可能由oldFunction更新)复制回托管对象。由于托管对象位于托管堆上,因此编译器不会让您传递对该对象中包含的指针的引用,因为当垃圾收集器运行时,该对象可能会移动。 感谢您的建议,它的指针指向C风格的抽象结构,我认为如果我将该结构暴露给托管代码,则由于缺乏定义的结构,这将导致进一步的痛苦。因此,我想我要做的是将C库包装在C ++中,然后用托管C ++包装C ++包装器,这将防止将这些C结构暴露给托管代码。 |
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为PyPython基础之numpy中的常见函数有
Python基础之numpy中的常见函数有哪些,数组,基础,培训,元素,方向,矩阵,函数,乘积,维度,索引,有些Python小白对numpy中的常见函数不太了解,今天python max函数中key是如何用的?
python max函数中key是如何用的?,工资,培训,函数,句子,单词,绝对值,参数,字典,列表,元素,在max函数使用的过程中,经常会有到key。在python的mapython的三角函数在哪?
python的三角函数在哪?,标准,培训,函数,反函数,方法,下面,以上,更多,内容,python中的三角函数在python的标准库math中,math已经包含在你的标python如何调用另一个文件夹中的内
python如何调用另一个文件夹中的内容?,系统,培训,文件,模块,内容,路径,函数,所在,前缀,语句,python中调用另外一个文件夹中的内容:1、同一文件python中函数怎么表示?
python中函数怎么表示?,名称,标准,培训,代码,函数,圆括号,字符串,表达式,选择性,自变量,python中函数定义规则:·函数代码块以def关键词开头,后python怎样获取json数据类型?
python怎样获取json数据类型?,培训,数据类型,类型,正则,火狐,以上,方法,更多,内容,列表,python中获取json不同数据类型的方法:1、获取"key":vpython有函数重载吗?
python有函数重载吗?,情况,代码,设计,名字,培训,函数,参数,功能,类型,两个,python中没有函数重载。为了考虑为什么python不提供函数重载,首先python如何获取列表里的数据类型?
python如何获取列表里的数据类型?,代码,信息,培训,类型,数据类型,表里,元素,语句,函数,对象,1、Python可以通过tpye()方法来判断list里的元知python map()函数怎么用?
python map()函数怎么用?,培训,函数,序列,列表,参数,元素,示例,字符串,语法,例子,pythonmap()会根据提供的函数对指定序列做映射。第一个参数python常用函数包有哪些?
python常用函数包有哪些?,项目,数据,标准,系统,基础,代码,地址,分析,检测,网站,一些python常用函数包:1、Urllib3Urllib3是一个Python的HTTP客python函数里面形参和实参一样吗?
python函数里面形参和实参一样吗?,培训,函数,参数,里面,变量,实际,形式,全称,示例,后面,python函数里面形参和实参不一样。形参全称是形式参