Передача объекта C ++ в C #

У меня есть приложение C #, которое получает сериализованные данные в виде текста из приложения C ++ (данные были сериализованы в C ++ с использованием библиотеки BOOST). Теперь сериализованные данные на самом деле являются объектом, который мне нужно преобразовать в аналогичный объект .Net Object.In чтобы добиться этого, мне сказали, что я мог бы написать компонент C ++ / CLI в виде dll, который мог бы десериализовать текстовые данные (используя ту же библиотеку, которая использовалась для его сериализации) и передать их обратно в приложение C #.
У меня нет опыта программирования на C ++ / CLI, но у меня нет проблем с программированием на C ++. Но я не думаю, что C ++ / CLI будет сложно заполучить. У меня вопрос, я не понимаю, как создание приложения C ++ / CLI передаст объект обратно в C #? Любые советы, учебники, ссылки будут с благодарностью

Редактировать отправляемый объект в C ++ примерно так

class person
{
public:
person()
{
}

person(int age) : age_(age)
{
}

int age() const
{
return age_;
}

private:

friend class boost::serialization::access;

template <typename Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & age_;
}

int age_;
};

3

Решение

Вы должны почитать пространство имен System.Runtime.InteropServices.Marshal

Вот отличная статья о том, как собрать двоичные данные — структуры в структурах c #.
http://www.codeproject.com/Articles/66243/Marshaling-with-C-Chapter-3-Marshaling-Compound-Ty

Вот ссылка на тип —
http://www.codeproject.com/Articles/66244/Marshaling-with-C-Chapter-2-Marshaling-Simple-Type

Это называется маршаллингом, при котором вы читаете двоичные или текстовые данные в структурах или сложных типах, используя C #.

Несколько вещей, которые вы должны рассмотреть здесь, это упаковка и выравнивание структур. поиск этих терминов даст очень полезные результаты

1

Другие решения

Я могу ошибаться, но разве не весь смысл XML в том, что он не зависит от платформы и языка? Пока вы получаете C # класс отражает структуру данных в файле XML
(то есть он имеет переменную int age_), у вас не должно возникнуть проблем с использованием обычного синтаксического анализатора файлов XML в C # для его десериализации. Тот факт, что файл XML был написан приложением C ++, не более важен, чем если бы вы написали его вручную.

-1

По вопросам рекламы [email protected]