c # метод в управляемом c ++ - PullRequest
3 голосов
/ 03 марта 2011

Я создаю библиотеку 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 Ответ

1 голос
/ 04 марта 2011

Если вы хотите вызвать функцию C # в C ++ \ CLI, вам нужно будет использовать те же типы.Массив в C # на самом деле cli::array<T,d> в C ++ \ CLI.Вы не сможете просто привести C ++ char[] к cli:array<T,d>.Я хотел бы взглянуть на собственный \ managed interop в MSDN.

Чтобы вызвать функцию из C ++ \ CLI, вам нужно будет создать массив, подобный этому:

cli::array<System::SByte> ^text = gcnew cli::array<System::SByte>(/* some_size */);
...