Как лучше всего обернуть нашу библиотеку программного обеспечения для обслуживания клиентских приложений C ++ и C #? - PullRequest
3 голосов
/ 25 октября 2010

Я начинаю работу над новым проектом, основным продуктом которого является Software Library .Существует существующий код, который мы будем оборачивать, написанный на C ++, потому что он очень численный;мы владеем и скомпилируем этот основной код.

Я полагаю, что у нас будет два основных типа клиентов: 1. Приложение, написанное на C ++, возможно, MFC 2. Приложение, написанное на C # .NET.

Вопрос : Какую технологию мы используем, чтобы предложить «идеальный» интерфейс для обоих этих типов клиентов?Например, мы могли бы предложить два интерфейса, один с использованием функций C / C ++ и обратных вызовов для клиентов C ++, а другой с использованием C # .NET для клиентов C #?Кроме того, в принципе, это может быть сделано в одной DLL, или мы будем хотеть две (или больше)?

Другая информация ... Клиентские приложения встроены, а не настольный компьютер илиноутбук;Предположим, что любой пользовательский интерфейс не на базе Windows.Также нам придется скомпилировать и протестировать как 32-битные, так и 64-битные, возможно C ++ на 32-битных и C # на 64-битных.

Мои извинения здесь - я понимаю, что этот вопрос, возможно, задавалсяи ответил ранее, но если так, я не смог найти его.

1 Ответ

5 голосов
/ 25 октября 2010

Интересный вопрос, я с нетерпением жду других ответов.

Одно из возможных решений, если, возможно, не лучшее: если код вашей библиотеки следует объектно-ориентированным методам, вы можете написать основные функции на C ++ изатем предоставьте отдельные классы обертки COM вокруг основных классов (также в C ++).Это позволит вам использовать компоненты вашей библиотеки из .NET через COM-взаимодействие.Я не знаю, насколько это будет эффективно - я подозреваю, что производительность в целом должна быть хорошей - и у COM есть некоторые очевидные недостатки (например, нет универсальных), так что это может быть не оптимальным решением.

Если ваша библиотека не объектно-ориентированная, вы все равно можете вызывать отдельные функции, экспортированные из любой библиотеки DLL в .NET, используя P / Invoke ... если вы пойдете по этому пути, вполне вероятно, что в итоге вы получитеоболочка C # вокруг вашей C ++ DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...