У меня есть несколько переносимых библиотек .NET, написанных на C #, которые мне нужно портировать на Qt (C ++). Поскольку многие из этих классов в значительной степени не зависят от классов платформы .NET, я подумал, что будет хорошей стратегией использовать сначала инструмент для преобразования кода C # в Managed C ++, а затем использовать его в качестве основы для переноса. это для использования в Qt, а не переписывать все это в C ++
Существуют ли бесплатные инструменты для преобразования кода C # или декомпиляции встроенной сборки в Managed C ++?
Поскольку многие из этих классов в значительной степени не зависят от классов платформы .NET, я подумал, что будет хорошей стратегией использовать сначала инструмент для преобразования кода C # в Managed C ++, а затем использовать его в качестве основы для переноса. это для использования в Qt, а не переписывать все это в C ++
Это ошибка в рассуждениях. Управляемый C ++ не является C ++. То, что они похожи по синтаксису, не упрощает процесс перемещения кода, напротив, вы делаете вещи излишне сложными для себя.
Первое, что приходит на ум, — это управление памятью. Ваш проект Managed C ++ будет использовать ссылки на объекты GC ( ^
type), который не может быть легко преобразован в семантику управления памятью C ++, и это не то, что можно сделать автоматически, если у вас нет собственной библиотеки Garbage Collection, которую вы готовы встроить в существующую программу.
В .NET есть больше, чем классы фреймворка, но рассмотрим среду выполнения. Я уже коснулся GC, но как насчет исключений? Threading? ABI? И так далее.
Вам лучше переписать его на чистом идиоматическом C ++, чем создавать беспорядок, который пытается превзойти CLR и притворяться, что C ++.