我想把一个字节数组/向量/缓冲区从C++传递到C#。
在C++的一侧,我将有一些数据存在一个向量中:
在C#端,我想以字节数组的形式访问这些数据,例如:
我目前正在使用这个概念将字符串从C++传递到C#:
而被调用的C#签名是:
如果我想传递一个字节向量,它会是什么样子?
在C++的一侧,我将有一些数据存在一个向量中:
std::vector<unsigned char> pixels_cpp;
在C#端,我想以字节数组的形式访问这些数据,例如:
byte[] pixels_cs
// or as a MemoryStream object, accompanied with size information.
我目前正在使用这个概念将字符串从C++传递到C#:
void MyWrapper::setSomeString(const std::string& someString)
{
mono_thread_attach (mono_get_root_domain ());
MonoMethod* mmSetSomeString = searchMethod("SetSomeString", monoClass);
void *args [1];
args [0] = mono_string_new (domain, someString.c_str());
MonoObject *result = mono_runtime_invoke (mmSetSomeString, CsClassInstance, args, NULL);
// check result
}
而被调用的C#签名是:
public bool SetSomeString(string someString)
如果我想传递一个字节向量,它会是什么样子?
- 我该如何分配内存并使用来自pixels_cpp的数据填充它?
- 如何使用mono_runtime_invoke(或等效方法)调用呢?
- c#方法签名应该是什么样子的?