如何在 C# 中编组数据类型 unsigned char**?
Posted
技术标签:
【中文标题】如何在 C# 中编组数据类型 unsigned char**?【英文标题】:How to marshall data type unsigned char** in C#? 【发布时间】:2010-06-18 08:02:30 【问题描述】:我正在尝试编组 unsigned char**(在 C++ 接口中)以便从 C# 调用该方法。
如何做到这一点?是否有 C++ 数据类型和 C# 数据类型的列表?
谢谢!
【问题讨论】:
【参考方案1】:这个unsigned char**
的语义是什么?如果是字节数组,则使用ref byte[]
。
如果它是一个以零结尾的字符串,请使用ref string
。
你可以在页面http://www.pinvoke.net找到一些流行的方法签名映射到c#,这可能会给你一些想法。
【讨论】:
在 C++ 接口中有这样一句话:“这个 [unsigned char**] 是一个指向字符数组的指针数组。每个字符都是标准 XSB 字符之一。”。此变量应用于存储推箱子游戏中对象的位置。谢谢! 在这种情况下 string[] 应该适合。【参考方案2】:我认为您应该使用具有C++
和C#
接口的序列化库。
来自 Google 的 Protocol Buffers 或来自 Facebook 的 Thrift 都支持这两种语言。
它肯定会让您的事情变得更轻松、更安全。
如果您决定更改传输的数据类型(即使用整数、结构等而不是原始字符串),则可以使用序列化库。
【讨论】:
感谢您的链接!但这是我需要的最后一个数据类型,所以我很乐意整理它并继续其他工作:) 如果您有空闲时间,我真的建议您查看一下。这似乎是您项目的完美用例,因为您正在交换不同的消息类型。使用协议缓冲区,更改消息结构或接口非常容易。这是一个帮助您开始使用 C# 的教程:snipplr.com/view/24475/…。您甚至可以在 Visual Studio IDE 中使用它:code.google.com/p/protobuf-net。【参考方案3】:这可以编组为ref string
。请务必使用具有[MarshalAs]
属性的正确字符集。
【讨论】:
以上是关于如何在 C# 中编组数据类型 unsigned char**?的主要内容,如果未能解决你的问题,请参考以下文章