Передача объектов между библиотекой C# и C++ (CLR)
Как передать объекты из библиотеки 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++?
1 ответ
Если вы хотите вызвать C# dll из кода C++, вы можете следовать этой статье. Короче говоря, вам придется:
- Напишите управляемую DLL, содержащую ваш CSharpClass
- Зарегистрируйте управляемую DLL для использования с COM или с собственным C++
- вызов управляемой библиотеки DLL из собственного кода C++
Этот вопрос также актуален и содержит альтернативные решения, если вы хотите избежать использования COM
Первоначальный ошибочный ответ:
Вы можете проверить эту статью для довольно хорошего учебника. Короче говоря, вам придется:
- Скомпилируйте dll из вашего кода на C++
маршалл ("переводить") ваш класс между C# и C++
- загрузить dll из C#, используя объявление DllImport
- вызвать импортированный метод