Как передать объекты из библиотеки C # в C ++.
Я могу вызвать функцию, которая возвращает void
или же int
без проблем.
Теперь рассмотрим следующую функцию в C #,
List<CSharpClass> CSharpFunction(string Input)
где мой класс C # содержит,
public class CSharpClass
{
string mystring = string.Empty;
byte[] bytearray = null;
public byte[] bytearray
{
get { return bytearray ; }
set { bytearray = value; }
}
public string mystring
{
get { return mystring ; }
set { mystring = value; }
}
}
Теперь я хочу использовать этот список в моем C ++. Итак, я создал,
typedef std::vector<class CSharpClass> MyDetailList;
Это правильный путь? Если не то, что мне нужно использовать в C ++?
Если вы хотите вызвать C # dll из кода C ++, вы можете следовать Эта статья.
Короче говоря, вам придется:
— Напишите управляемую DLL, содержащую ваш CSharpClass
— Зарегистрируйте управляемую DLL для использования с COM или с Native C ++
— Вызов управляемой DLL из собственного кода C ++
Это ТАК вопрос также актуален и содержит альтернативные решения, если вы хотите избежать использования COM
Первоначальный ошибочный ответ:
Ты можешь проверить Эта статья для довольно хорошего урока.
Короче говоря, вам придется:
— Скомпилируйте dll из вашего кода C ++
— маршалл («переводить») ваш класс между C # и C ++
— загрузить DLL из C #, используя объявление DllImport
— вызвать импортированный метод
Других решений пока нет …