Как маршаллировать тип данных unsigned char ** в C #? - PullRequest
2 голосов
/ 18 июня 2010

Я пытаюсь маршировать unsigned char ** (который находится в интерфейсе C ++) для вызова метода из C #.

Как это можно сделать? Есть ли список, где находятся типы данных C ++ и типы данных C #?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 18 июня 2010

Какова семантика этого unsigned char**?Если это байтовый массив, используйте ref byte[].Если это строка с нулевым окончанием, используйте ref string.

. На странице http://www.pinvoke.net, вы можете найти некоторые популярные сигнатуры методов, сопоставленные с c #, которые могут дать вам представление.

1 голос
/ 18 июня 2010

Я думаю, вам следует использовать библиотеку сериализации, которая имеет интерфейс для C++ и C#.

Оба Буферы протокола от Google или Thrift от Facebook поддерживают эти два языка.

Это определенно сделает все намного проще и безопаснее для вас.

Если вы решите изменить переданные типы данных (т.е. использовать вместо этого целые числа, структуры и т. д.)необработанных строк), использование библиотеки сериализации - путь.

0 голосов
/ 18 июня 2010

Это будет маршализуемым как ref string.Обязательно используйте правильный набор символов с атрибутом [MarshalAs].

...