我正在将一个字节数组从 C# 传递给 Java。目前我的 C++ 代码如下所示:
sendDocument(array<byte> ^arr) //Called by C# class
{ ...
jbyteArray result = javaEnv->NewByteArray(arr->Length);
jbyte *bytes = javaEnv->GetByteArrayElements(result, 0);
for(int k = 0; k < arr->Length ; k++)
{
bytes[k] = arr[k];
}
... //Call Java method
}
我可以以某种方式省略复制部分(或以不同的方式提高性能)吗?
编辑: 我设法通过指针工作完成了它:
jbyteArray result = javaEnv->NewByteArray(arr->Length);
pin_ptr<unsigned char> pUnmanagedArr = &arr[0];
javaEnv->SetByteArrayRegion(result, 0, arr->Length, (jbyte*)pUnmanagedArr);
但是这种方法有多脏?