Поддерживает ли Mono .NET и компилирует ли C++ / CLI?

Поддерживает ли Mono .NET и компилирует ли C++ / CLI?

Если нет, знаете ли вы, есть ли у них планы поддержать его?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
33
0
21 439
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

перейдите здесь и посмотрите в разделе «Отсутствующие языки». Но то, что вы не можете скомпилировать, не означает, что вы не можете бег. Вы можете скомпилировать свой код C++ с помощью framework sdk и попробовать запустить его с помощью mono. В любом случае стоит попробовать.

Mono может запускать «чистые» сборки, созданные C++ / CLI, т.е. те, которые не содержат собственный код Любые. Различные параметры / clr, поддерживаемые компилятором C++, задокументированы на MSDN.

В настоящее время нет поддержки для компиляции C++ / CLI. Была проведена некоторая работа по изменению GCC для выдачи IL, но она не завершена (и не выглядит активной). См. Этот статья.

Я не верю, что Microsoft документирует формат для включения собственного кода в сборку, поэтому поддерживать это сложно.

Ответ принят как подходящий

У нас нет компилятора для C++ / CLI, это было бы очень большим мероприятием для очень небольшой пользовательской базы. Учтите также, что спецификация C++ / CLI изначально ошибочна и непереносима, поэтому возможность ее компиляции в общем случае не очень поможет.

Вы можете скомпилировать с помощью компилятора MS .NET и запустить моно со следующими ограничениями:

  1. запускать с моно в любой системе, если приложение C++ / CLI полностью управляется (но тогда зачем использовать такой уродливый язык, а не C#?)

  2. в других случаях запускать с моно в окнах (приложения C++ / CLI, как правило, непереносимы и включают собственный код, поэтому они могут работать только в Windows и неинтересны для основной цели моно, которая заключается в запуске управляемых программ в Linux)

Обратите внимание, что сама MS в конечном итоге откажется от C++ / CLI, поэтому не вкладывайте в него слишком много и переходите на C#.

«Сама MS со временем откажется от C++ / CLI». Не могли бы вы объяснить, почему вы так думаете? Мне это кажется маловероятным.

Eggs McLaren 11.10.2008 16:43

Управляемый C++ уже не поддерживается и снят с производства, на это у них не ушло много времени. А теперь посчитайте новости, связанные с C++ / CLI за последний год или два, сообщения в блогах, объявления. Соедините точки.

lupus 12.10.2008 12:59

Подсчитайте новости, сообщения в блогах, объявления, связанные с C++ (исходящие от Microsoft), и сравните их с C#, ASP.NET и т. д. Означает ли это, что MS откажется от C++?

Jay Mooney 13.10.2008 03:23

У старого и устоявшегося языка меньше потребностей в разработке, и все же C++ от MS получил гораздо больше внимания, чем C++ / CLI. Но это ваши деньги, поэтому, если вы хотите инвестировать в C++ / CLI, решать вам, я просто даю свой совет: людям следует держаться подальше от C++ / CLI, и вдвойне, если они ценят переносимость.

lupus 13.10.2008 11:37

если они ценят переносимость, им также следует держаться подальше от C#. Я думаю, что MS навсегда сохранит C++ / CLI, думаю, что они поддерживают языки Iron * и у них еще меньше пользователей.

gbjbaanb 05.12.2008 01:53

Управляемый C++ был исключен из-за серьезных проблем с удобством использования. C++ / CLI как язык взаимодействия никуда не исчезнет, ​​но он уже является второсортным гражданином для GUI - WPF не поддерживается и никогда не будет поддерживаться.

Andy Dent 26.01.2009 08:33

«Управляемый C++ уже не поддерживается и снят с производства, им не потребовалось много времени, чтобы это сделать»: вот почему я ненавижу Microsoft страстью, граничащей с патологией. После того, как я потратил около года своей жизни на изучение этого неполноценного языка, не говоря уже о бесчисленных долларах, которые я потратил на покупку книг по управляемому C++ по завышенным ценам в прессе Microsoft, язык был бесцеремонно и незаметно отброшен. VB6 (хотя он и был бессмысленным языком, имел огромное количество поклонников) - точно так же был бессердечно убит MS - несмотря на громкие протесты со стороны клиентской базы. Я лично приветствую наших новых повелителей Google и др.

Stick it to THE MAN 04.04.2010 17:27

@StickittoTHEMAN Я не фанат M $, но убийство VB6, несомненно, было одним из лучших поступков M $ - эта сука была уродливой. Что касается C++ CLI, у него есть ниша для взаимодействия, но это тоже уродливо - вне взаимодействия вам либо нужно и использовать C++, либо наслаждаться C#. C++ CLI никогда не был чем-то полезным для разработчиков или M $ - вам следовало потратить свои книжные деньги в другом месте.

Ricibob 21.09.2011 00:21

Довольно забавно, что C++ мертв, комментарии продолжаются вплоть до конца 2011 года. C++ так хорошо работает в Microsoft (WinRT), что некоторые люди теперь обеспокоены тем, что проблемы возникают именно с C#. Я так не думаю. Во всяком случае, теперь вы можете разрабатывать приложения C++ с помощью XAML, поэтому некоторые из комментаторов выше должны быть удивлены.

Justin 29.01.2012 14:31

@Justin Я просто хотел бы отметить следующее. Вариант C++, используемый для WinRT, - это C++ / CX (аналогичный случай с CLR и C++ / CLI), который включает ряд функций, которых еще нет (частичные классы, асинхронные продолжения и т. д.) Или никогда * не будут (среда выполнения классы), часть стандарта C++ 11. * в обозримом будущем.

Gabriel Garcia 21.04.2013 00:37

Я думаю, что настоящий невысказанный вопрос заключается в том, что Mono должно заменить этот пробел: как мне написать свои привязки к библиотекам C++ для использования в проектах C#? Одно дело просто сказать: «C++ / CLI - отстой, поэтому мы не будем этого делать», не задумываясь о том, что еще использовать.

John 19.11.2014 19:22

C++ / CLR все еще работает с VS 2017

jjxtra 17.06.2017 17:43

Нет, C++ / CLI - это не поддерживается под Mono и, вероятно, никогда не будет, хотя генерация чистого IL с использованием компиляторов MS позволит полностью управляемому коду работать под Mono.

В качестве языка взаимодействия существует C++ / CLI, позволяющий вызывать неуправляемый код. Другой альтернативой является использование P / Invoke, который является хорошо документированы, хотя и с проблемами.

О каких проблемах вы думаете?

Stringer 30.04.2010 08:45

В Mono 2.4 вы можете запускать приложения C++ / CLI, которые были скомпилированы, например, под Visual Studio 2008 с переключателем / clr: safe.

Mono недавно добился значительных успехов в обеспечении взаимодействия C++ в CXXI.

Из этой публикации, вкратце, новая технология CXXI ​​позволяет разработчикам C# /. NET:

  • Легко использовать существующие классы C++ из C# или любого другого .NET язык
  • Создание экземпляров объектов C++ из C#
  • Вызов методов C++ в классах C++ из кода C#
  • Вызов встроенных методов C++ из кода C# (при условии, что ваша библиотека скомпилирована с помощью -fkeep-inline-functions или вы предоставили суррогат библиотека)
  • Подкласс C++ классов из C#
  • Переопределить методы C++ методами C#
  • Предоставьте экземпляры классов C++ или смешанных классов C++ / C# как для кода C#, так и для C++, как если бы они были машинным кодом.

CXXI - это результат двух летних работ Google Summer of Code, направленных на улучшение взаимодействия Mono с языком C++.

Каков текущий статус этого проекта? Находится ли он в рабочем состоянии? В репо не было никакой активности около года, и дискуссионная группа довольно пуста.

Chris Long 02.12.2012 00:57

Было бы интересно, если есть какие-то планы по поддержке этого в будущем.

Felix K. 20.02.2014 20:05

Похоже, он мертв.

John 19.11.2014 19:18

Это очень старый вопрос, на который спустя несколько лет появятся очень интересные ответы. На данный момент tritao / CppSharp является наиболее активно разрабатываемым форком моно / cxxi, который был перемещен обратно в репозиторий мононуклеоз в 2013 году и активно развивается с тех пор, как текущее дерево можно найти на моно / CppSharp

Их файл readme - здесь, а функции «генератора»:

  • Несколько бэкэндов: C++ / CLI и C# P / Invoke
  • Несколько ABI: Itanium, MS, ARM, iOS и iOS64
  • Несколько платформ: Windows, OS X и Linux
  • Поддержка переопределения виртуальных таблиц
  • Поддержка множественного наследования
  • Легко расширяемая семантика через пользовательские проходы
  • Незавершенная поддержка STL (только C++ / CLI)
  • Строго типизированные API настройки и карты типов

Он также поставляется с множеством классных вещей AST и парсером.

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