我有带有类的 c++ dll,我想从 C# 代码发送字符串,由于 CLR,我无法使用字符串,我将尝试在 c++ dll 中将字符串更改为 char,并从 c# 发送字节(因为 c# 中的 c++ char=byte) 但 c# 不理解 c++ 数组我可以发送 1 个字节,它会好的,但不是数组,请帮忙! dll代码:
public ref class Coding
{
public:
void HillCoding(char filePath[])
{
...
}
};
最佳答案
这是从 C# 调用 C++ dll 函数的工作代码:
sbyte[] A_SB_array = new sbyte[0];
ArrayConvCtoSB(ref A_SB_array, ar_param.ToCharArray());
fixed (sbyte* SB_array = A_SB_array)
return CPSFEW.getDataLength(SB_array);
这不是“非常好的代码”,但它说明了您的需求。
PS:这里是ArrayConvCtoSB。我不喜欢它,它只是为了理解。
static private void ArrayConvCtoSB(ref sbyte[] to_sbyte, char[] from_char)
{
for (int i = 0; i < from_char.Length; i++)
{
Array.Resize(ref to_sbyte, to_sbyte.Length + 1);
to_sbyte[i] = (sbyte)from_char[i];
}
}
PPS:“固定”是强制垃圾收集器不清除 SB_array 内存的强烈要求:否则它可以。 :)
关于c# - 在 C# 中使用 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115199/