在 C# 中,我有一个数据类型 byte[]
,我想使用返回 char*
的 C++ 函数来填充它
C++ 函数(在 ImageData.dll
中)
char* pMemoryBuffer = NULL;
char* LoadData(const char *fileName)
{
// processing pMemoryBuffer ...
return pMemoryBuffer;
}
将 native dll 导入 C#:
[DllImport(".\\Modules_Native\\ImageData.dll", EntryPoint = "LoadData")]
private extern static byte[] LoadData(string fileName);
C#中的byte[]
数据
byte[] buffer = new byte[256*256];
buffer = LoadData("D:\\myPic.tif");
显然它还没有工作,但它提出了我想做的事情的想法。所以我想知道如何进行这项工作,以及正确的方法是什么。非常感谢您的教育。
最佳答案
试试这个
// c++
void LoadData(unsigned char* *pMemoryBuffer, const char *fileName)
{
// processing pMemoryBuffer ...
*pMemoryBuffer = resutss;
}
将 native dll 导入 C#:
[DllImport(".\\Modules_Native\\ImageData.dll", EntryPoint = "LoadData")]
private extern static void LoadData(out IntPtr data, string fileName);
当函数返回时,数据将指向数组,您可以使用 Marshal 类读取内容。我猜你会 copy it to a new byte arra是的。
byte[] buffer = new byte[256*256];
buffer = Marshal.Copy(LoadData(buffer ,"D:\\myPic.tif"), buffer , 0, buffer.Length);
关于c# - 从 C++ 中的 char* 获取 C# 中的 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454176/