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

Вы можете получить это исключение просто простой / немой ошибкой, например (случайно), вызвав finish() после отображения AlertDialog, если вы пропустите заявление о вызове break в инструкции switch ...

   @Override
   public void onClick(View v) {
    switch (v.getId()) {
        case R.id.new_button:
            openMyAlertDialog();
            break; <-- If you forget this the finish() method below 
                       will be called while the dialog is showing!
        case R.id.exit_button:
            finish();
            break;
        }
    }

Метод finish() закроет Activity, но AlertDialog все еще отображается!

Итак, когда вы пристально смотрите на код, ищите плохого проблемы с потоками или сложное кодирование и т. д., не упускайте из виду лес для деревьев. Иногда это может быть просто что-то такое же простое и немое, как недостающий оператор break. :) [/ Д2]

30
задан Brian R. Bondy 8 October 2008 в 15:26
поделиться

5 ответов

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

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

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

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

Примечание, что сам MS в конечном счете отбросит C++ / CLI, не вкладывает капитал слишком много на нем и переключается на C#.

23
ответ дан Sklivvz 8 October 2008 в 15:26
поделиться
  • 1
    Да, но это тестирует только тип, не обмениваются сообщениями или другое содержание, и вопрос был о тестовом сообщении, не вводят. – bodolsog 9 August 2018 в 22:27

Моно в состоянии выполнить 'чистые' блоки, сгенерированные C++ / CLI, т.е., которые не содержат никакой собственный код. Различные опции сброса/, поддерживаемые компилятором C++, документируются на MSDN.

в настоящее время нет никакой поддержки компиляции C++ / CLI. Была некоторая работа над изменением GCC для испускания IL, но это не завершено (и не кажется активным). Посмотрите этот статья .

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

9
ответ дан Rob Walker 8 October 2008 в 15:26
поделиться

пойдите сюда и посмотрите под "Недостающими Языками". Но просто потому что Вы наклоняетесь, компиляция не означает, что Вы наклоняетесь , работает . Можно скомпилировать код C++ с помощью платформы sdk и попытаться выполнить его с помощью моно. Стоящий попытки так или иначе.

0
ответ дан Kinjal Dixit 8 October 2008 в 15:26
поделиться

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

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

1
ответ дан Andy Dent 9 October 2008 в 02:26
поделиться
  • 1
    Почему try? нет попытки - но ответ. Если это - ответ, уточните больше. что Вы добавляющий к существующему ответу? – dWinder 16 May 2019 в 17:38

On Mono 2.4 you can run C++/CLI applications which were compiled under e.g. Visual Studio 2008 with /clr:safe switch.

2
ответ дан 27 November 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: