2014-02-12 3 views
0

Как передать объекты из библиотеки C# в C++.Передача объектов между библиотекой C# и C++ (CLR)

Я могу вызвать функцию, которая возвращает 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++, вы можете следовать this article. В двух словах, вы будете иметь, чтобы:
- Написать Managed DLL, содержащую ваш CSharpClass
- Зарегистрируйте Managed DLL для использования с COM или Native C++
- Вызов управляемых DLL из Native C++ кода

This SO question также актуален, и содержит альтернативные решения, если вы хотите, чтобы избежать использования COM


Initial порочного ответа:

Вы можете проверить this article за довольно хороший учебник. В двух словах, вы будете иметь, чтобы:
- Компиляция DLL из вашего кода С ++
- маршалом ("перевести") свой класс между C# и
C++ - загрузить DLL из C#, используя DllImport Объявление
- вызов импортированного метода

+0

У меня есть C# dll, вы хотите получить байт [] в проекте на C++. Как я уже упоминал, я могу вызвать функцию, которая возвращает void или int без каких-либо проблем. – Dinesh

+0

О, мой плохой, я неправильно понял вопрос. Будет отредактировать ответ соответственно –

+0

Спасибо за обновленный ответ, но я не смог найти ответ, чтобы получить байт [] в проекте C++ :( – Dinesh