我正在创建一个c#dll库来扫描进程内存。 我有静态方法:
int searchASCII(int pid, SByte[] text, int pos)
{
ReadProcessApi RApi = new ReadProcessApi(pid, pos);
return RApi.ASCIIScan(text);
}
并希望在Visual C ++ Managed中使其可用。
如果我想在c ++中调用这样的方法,那么应该将哪种类型用于文本参数:
searchASCII((int)pid, (char[])text, (int)position)
?
在当前情况下,我收到错误:
"cannot convert parameter from 'char [6]' to 'cli::array<Type,dimension> ^' "
答案 0 :(得分:1)
如果要在C ++ \ CLI中调用C#函数,则需要使用相同的类型。 C#中的数组实际上是C ++ \ CLI中的cli::array<T,d>
。您不仅可以将C ++ char[]
转换为cli:array<T,d>
。我将在MSDN上查看本机\ managed interop。
要从C ++ \ CLI调用该函数,您必须创建一个这样的数组:
cli::array<System::SByte> ^text = gcnew cli::array<System::SByte>(/* some_size */);