Сериализируйте в C++, тогда десериализовывают в C#?

Если это предназначено для печати, вы можете использовать paper.css

https://github.com/cognitom/paper-css

примеры [1110 ]

https://github.com/cognitom/paper-css/blob/master/examples/a4-landscape.html

Все доступные размеры страниц доступны CSS

  • A5, A5 пейзаж
  • A4, A4 пейзаж
  • A3, A3 пейзаж
  • буква, буква пейзаж
  • правовой, правовой пейзаж

Спасибо.

11
задан scottm 7 April 2009 в 15:45
поделиться

6 ответов

Буферы протокола могли бы быть полезны для Вас.

Буферы протокола являются нейтральным в отношении языка, независимым от платформы, расширяемым механизмом Google для сериализации структурированных данных – думают XML, но меньший, быстрее, и более простой. Вы определяете, как Вы хотите, чтобы Ваши данные были структурированы однажды, затем можно использовать специальный сгенерированный исходный код, чтобы легко записать и считать структурированные данные в и от множества потоков данных и использования множества языков – Java, C++ или Python.

Порты.NET доступны от Marc Gravell и Jon Skeet.

8
ответ дан 3 December 2019 в 10:05
поделиться

WCF is the .NET framework solution for serializing data it looks like this link figured out how to consume the data in c++, that's kind of the opposite direction of what you want, but there might be an easy analog for reversal.

http://geekswithblogs.net/cicorias/archive/2007/08/28/Consuming-WCF-Services-from-COM-using-C.aspx

1
ответ дан 3 December 2019 в 10:05
поделиться

C++ не имеет структурного самоанализа (Вы не можете узнать поля класса во времени выполнения), таким образом, нет общих механизмов для записи объекта C++. Или необходимо принять конвенцию и использовать генерацию кода или (более обычно) писать сериализацию сами.

Существуют некоторые библиотеки для стандартных форматов, таких как ASN.1, HDF5, и так далее которые являются нейтральным языком реализации. Существуют собственные библиотеки, которые служат той же цели (например, буферы протокола).

Если Вы нацелены на конкретную архитектуру и компилятор, то можно также просто вывести объект C++ как необработанные байты, и создавать синтаксический анализатор на стороне C#.

Вполне то, что лучше, зависит, как сильно связанный Вы хотите, чтобы Ваши конечные точки были, и являются ли данные главным образом числовыми (HDF5), дерево и структуры последовательности (ASN.1) или простые простые объекты данных (непосредственно пишущий значения в памяти)

0
ответ дан 3 December 2019 в 10:05
поделиться

Существует много опций, из которых можно выбрать. Именованные каналы, общая память, DDE, дистанционная работа... Зависит от Вашей конкретной потребности.

Быстрый поиск с помощью Google дал следующее:

Именованные каналы

Названная общая память

DDE

-1
ответ дан 3 December 2019 в 10:05
поделиться

Другие опции были бы:

  • создание двоичного файла, который содержит данные в способе, которым Вам нужен он (не легкое и портативное решение)

  • XML

  • YAML

  • файлы простого текста

0
ответ дан 3 December 2019 в 10:05
поделиться

Как упомянуто уже, Буферы Протокола являются хорошим вариантом.

Если бы та опция не удовлетворяет Вашим потребностям, то я посмотрел бы на отправку XML клиенту (необходимо будет снабдить префиксом сообщение длину, таким образом, Вы знаете, сколько читать), и затем использование реализации IXmlSerializer, или используйте атрибуты DataContract/DataMember в сочетании с DataContractSerializer для получения представления в.NET.

Я рекомендовал бы против использования атрибутов маршалинга, поскольку они не поддерживаются на вещах как List<T> и много других стандартных классов.NET, которые Вы обычно использовали бы.

0
ответ дан 3 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: