托管c ++中的c#方法

时间:2011-03-03 20:56:34

标签: c# memory managed-c++

我正在创建一个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> ^' "  

1 个答案:

答案 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 */);