gpt4 book ai didi

c# - 在 C# 应用程序中调用带有 void* 参数的 C++ 函数

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:59 26 4
gpt4 key购买 nike

我有一个看起来像这样的 C++ 函数:

int Compression::DecompressPacket(const void* inData, int inLength, void* outData, int outLength)
{
int headerLength = ComputeDataHeaderLength(inData);
return DecompressDataContent(static_cast<const unsigned char*>(inData) + headerLength, inLength - headerLength, outData, outLength);
}

该函数位于一个类中,该类位于 C++ 库中。

另一方面,我需要在我的 C# 应用程序中调用这个函数。该功能要求我输入类型参数:“void*、int、void*、int”。

当我尝试在不安全的函数中创建一个 void* 时,

unsafe private void lstbox_packets_SelectedIndexChanged(object sender, EventArgs e)
{
[...]
byte[] value = byteValuePackets[lstbox_packets.SelectedIndices[0]];
void* pValue = &value;
[...]
}

我得到错误:

Error 8 Cannot take the address of, get the size of, or declare a pointer to a managed type ('byte[]')

我不是很熟悉 C++ 和指针,但我应该如何在 C# 中传递 void* 类型?

最佳答案

你不应该取value的地址,而且你必须使用fixed声明:

fixed (void* pValue = value)
{
//...
}

关于c# - 在 C# 应用程序中调用带有 void* 参数的 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36272811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com