【发布时间】:2015-04-03 21:19:24
【问题描述】:
我有一个要在我的 Windows 应用商店 C# 应用程序中使用的 C 代码。不是很擅长 C/C++ 但可以在几行内猛击,所以我有一个问题和一个问题。其中一个 C 源函数如下所示:
send_data(const char *data, size_t len)
我尝试编写的 C++/CX 包装类中此 send_data C 方法的包装方法具有以下签名:
WrapperClass::send_data(const Platform::Array<byte>^ buff)
问题来了:
- 如何将 Platform::Array^ 转换为 char* 以便调用 send_data?是否需要分配内存并添加 NULL 来终止 char* 数组?
- 当我将 C# 中的数据作为 byte[] 传递时,是否需要将其固定在内存中,以免它被移动?
【问题讨论】:
-
这看起来不像 c 或 c++。这可能实际上是 c++/cli 吗?
-
源代码在 C 中,我尝试获取 C++CLI 部分。为了清楚起见,编辑了问题
-
@Angew & Kamen 啊,我的错。
-
Platform::Array 是原生类型,语言扩展名为 C++/CX。与托管代码无关,无需固定。您只需使用 new 运算符创建一个 char* 缓冲区并复制字节。不要忘记 0 终止符,只需始终附加它以确保。