Platform :: Array <byte> ^ to char * - 转换和内存</byte>

时间:2015-02-04 11:12:01

标签: arrays interop c++-cx

我想在我的Windows Store 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)

以下是问题:

  1. 如何将Platform :: Array ^转换为char *以便我调用send_data?我是否需要分配内存并添加NULL以终止char *数组?
  2. 当我将来自C#的数据作为byte []传递时,是否需要将其固定在内存中,以免它被移动?

2 个答案:

答案 0 :(得分:0)

  

我是否需要添加NULL来终止char *数组?

这取决于C send_data()函数实际发送的内容。它是否发送0 - 终止符?如果“是”,那么您需要提供它或让发件人的实现附加它。

答案 1 :(得分:-1)

所以,回答我的第一个问题 - 将Platform :: Array转换为char *并不比:

更难
const char* data = _strdup((const char*)data->Data);

注意,我使用的是Visual C ++ CLI(Visual Studio 2013),所以_strdup是那里的选择。

至于钉扎 - 稍后会看到:)