Есть ли инструменты для переноса кода C++ в код C#?

У меня есть пара утилит C++, которые я хотел бы перенести в точку net. Мне было интересно, есть ли инструменты для переноса приложения C++ на C#?

Я полагаю, что любой автоматизированный инструмент может испортить любой код, поэтому, возможно, мне стоит спросить, хорошая ли это идея или нет?

6 ответов

Решение

Лучший вопрос: почему вы бы просто портировали рабочий код, не получая добавленной стоимости (то есть новых функций)? Усилия почти наверняка будут тяжелее и займет больше времени, чем вы ожидаете. Лучше использовать множество возможностей взаимодействия.Net для вызова вашего кода C++ из C#. Сосредоточьтесь на добавлении новых функций в C#, но не тратьте свое время на перенос рабочего кода.

  1. Клавиатура.
  2. Мышь.
  3. Монитор.
  4. Кофе.
  5. Регулярное выражение поиска и замены.

Конечно, это живой рынок. Переход с C++ на C# дает вам то, что может скомпилироваться без ошибок. Чтобы заставить его работать на самом деле, требуется построчное усилие: "О боже, я пристрелю себя завтра". YMMV.

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

C++ -> C#: что нужно знать, чтобы перейти с C++ на C#

В моей компании Semantic Designs есть инструмент, который конвертирует из C++ в C#. Он обрабатывает базовые языковые конструкции преобразования из C++ (объявления данных / классов, исполняемые операторы) в C#. Инструмент перевода основан на наборе инструментов реинжиниринга программного обеспечения DMS.

Он нуждается в настройке для обработки перевода экзотических конструкций (COM-вызовов, ваших пользовательских API, ...) в C#. Любой инструмент, который вы можете найти, нуждается в такой настройке; ни один из готовых инструментов практически не может удовлетворить ваш полный набор конкретных обстоятельств.

Как насчет компилятора C++/CLI, который создает сборки.NET из кода C++. В конце концов вы захотите переделать точки входа для принятия типов.NET (например, System::String вместо классики char *), но вы получите намного быстрее.NET, не используя C#. Есть также автоматические преобразования между C++/CLI и C#, но только после того, как код C++.NETified (вышеупомянутое преобразование в System::String, generic<typename T> System::Collections::Generic::List, так далее.)

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