Передача объектов между библиотекой 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
- вызвать импортированный метод

Другие вопросы по тегам