我有一个用 C++ 编写的 DLL,它是 C# 围绕 LZO 库的包装器。但出于测试目的,我想知道是否可以转换类型,所以我创建了一个测试函数,它接受文件的内容和大小并写入它的副本。
extern "C"
{
__declspec(dllexport) void WriteFile(lzo_uint8 * source, int size)
{
FILE * fileToWrite;
fileToWrite = fopen("test.eix", "wb+");
if (fileToWrite)
{
fwrite(source, 1, size, fileToWrite);
}
fclose(fileToWrite);
free(source);
}
}
这是代码的图像,为了更好的可读性:http: //i.epvpimg.com/u4mgh.png
然后我像这样导入它:
[DllImport(@"GLZO.dll")]
public static extern void WriteFile(byte[] source, int size);
并这样称呼它:
byte[] g = ReadFile("raw/roota.eix");
WriteFile(g, g.Length);
问题不在 ReadFile 函数中,我检查了它。我从另一个文件创建了一个副本,并用校验和检查了两者。
所以,我的问题是:我应该如何将 byte[] 转换为 lzo_uint8* (unsigned char*)?