Перевести C ++ / CLI на C # - PullRequest
       11

Перевести C ++ / CLI на C #

3 голосов
/ 16 сентября 2008

У меня есть небольшой и средний проект, который находится в C ++ / CLI. Я действительно ненавижу расширения синтаксиса C ++ / CLI, и я предпочел бы работать в C #. Есть ли инструмент, который делает достойную работу по переводу одного на другой?

РЕДАКТИРОВАТЬ: Когда я сказал Managed c ++, прежде чем я, очевидно, имел в виду c ++ / CLI

Ответы [ 5 ]

4 голосов
/ 16 сентября 2008

Вы можете перевести управляемый код C ++ (и код C ++ / CLI) в C # только в том случае, если код C ++ чисто управляемый. Если это не так, т. Е. Если в исходные тексты включен собственный код, такие инструменты, как .NET Reflector, не смогут перевести этот код для вас.

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

Удачи! Я чувствую к тебе!

2 голосов
/ 16 сентября 2008

Я не уверен, что это будет работать, но попробуйте использовать .Net Reflector вместе с плагином ReflectionEmitLanguage . Плагин RelelectionEmitLanguage утверждает, что конвертирует вашу сборку в код c #.

2 голосов
/ 16 сентября 2008

.NET Managed C ++ походит на крушение поезда. Но вы смотрели в C ++ CLI? Я думаю, что Microsoft проделала большую работу в этой области, чтобы сделать C ++ первоклассным гражданином .NET.

http://msdn.microsoft.com/en-us/magazine/cc163852.aspx

0 голосов
/ 16 сентября 2008

Такие проекты часто выполняются в c ++ / cli, потому что C # не совсем элегантный вариант для этой задачи. например если вам приходится взаимодействовать с некоторыми родными библиотеками C ++ или выполнять очень высокопроизводительные вещи на низком уровне C. Поэтому просто убедитесь, что у того, кто выбрал c ++ / cli, не было веской причины сделать это, прежде чем переключаться.

Сказав это, я очень скептически отношусь к тому, что делает то, что вы просите, по той простой причине, что не весь код C ++ / cli может быть переведен в C # (и, вероятно, тоже наоборот).

0 голосов
/ 16 сентября 2008

Назад ~ 2004 У Microsoft был инструмент, который конвертировал управляемый C ++ в C ++ / CLI ... вроде. Мы запустили его на нескольких проектах, но, честно говоря, объем работ, оставшихся для очистки проекта, был не меньше, чем объем работ, который был бы для выполнения конвертации вручную. Я не думаю, что инструмент когда-либо делал это в публичном выпуске (возможно, по этой причине).

Я не знаю, какую версию Visual Studio вы используете, но мы управляли кодом C ++, который не будет компилироваться с Visual Studio 2005/2008 с помощью переключателя / clr: oldSyntax, и у нас все еще есть реликтовая версия VS 2003 для Это.

Я не знаю ни одного способа перехода от C ++ к C # полезным способом ... вы можете попробовать отключить его через отражатель:)

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