加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将C#引用传递给C指针并返回

发布时间:2020-12-15 21:44:45 所属栏目:百科 来源:网络整理
导读:我想将C#引用传递给C/C++代码(指针),然后从指针返回C#引用. 我有很多对(uint,Object).我用C代码创建了排序机制,因为它比C#快得多.只需要键(uint)和值(对象引用). C代码使用键进行排序,而不是更改值(指针).有没有简单的方法呢?我需要使用编组吗? C函数将被
我想将C#引用传递给C/C++代码(指针),然后从指针返回C#引用.
我有很多对(uint,Object).我用C代码创建了排序机制,因为它比C#快得多.只需要键(uint)和值(对象引用). C代码使用键进行排序,而不是更改值(指针).有没有简单的方法呢?我需要使用编组吗? C函数将被调用多次(甚至可能是一百万次),所以我担心编组太慢了,我甚至不知道如何用编组来完成它.我相信当GC改变对象地址时,C#引用的地址不会改变.因此不需要将对象放在pined内存中.我是对的吗?
现在我能够使用DllImport调用C函数,我能够将C#引用存储到C指针,但是我无法将地址存储在C指针的C#引用中.

关于如何做到这一点的任何想法?

解决方法

不能将任何变量直接从manged c#代码传递给本机c代码.解决方案是pinvoke,您可以在其中封送数据.

这工作正常,但你应该知道这不是每次紧固解决方案.在每次调用时,必须复制内存并根据数据类型进行转换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读