如何在 C# 中编组数据类型 unsigned char**?
我正在尝试编组 unsigned char** (位于 C++ 接口中)以便从 C# 调用该方法。
这怎么能做到呢?是否有 C++ 数据类型和 C# 数据类型的列表?
谢谢!
I'm trying to marshall unsigned char** (which is in a C++ interface) in order to call the method from C#.
How can this be done? Is there a list where are C++ data types and C# data types?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这个
unsigned char**
的语义是什么?如果是字节数组,则使用ref byte[]
。如果它是以零结尾的字符串,请使用
ref string
。你可以在http://www.pinvoke.net页面找到一些映射到c#的流行方法签名,这可能会给你这个想法。
What is the semantics of this
unsigned char**
? If it is a byte array, useref byte[]
.If it is a zero terminated string, use
ref string
.You can find some popular method signatures mapped to c# on the page http://www.pinvoke.net, which may give you the idea.
我认为您应该使用具有 C++ 和 C# 接口的序列化库。
来自 Google 的 协议缓冲区 或 Thrift 支持这两种语言。
这肯定会让您的事情变得更加轻松和安全。
如果您决定更改传输的数据类型(即使用整数、结构等而不是原始字符串),那么使用序列化库是最佳选择。
I think you should use a serialization library that has an interface for both
C++
andC#
.Both Protocol Buffers from Google or Thrift from Facebook support these two languages.
It would definitely make things much easier and safer for you.
If you decide to change the transferred data types (i.e. use integers, structures, etc. instead of raw strings), using a serialization library is the way to go.
这将被编组为
ref string
。请务必使用带有[MarshalAs]
属性的正确字符集。That would be marshalable as
ref string
. Be sure to use the right character set with a[MarshalAs]
attribute.