Windows Phone 7 и родной C ++ / CLI - PullRequest
37 голосов
/ 16 марта 2010

Microsoft недавно выпустила инструменты и документацию для своей новой платформы Phone 7, которая, к ужасу тех, кто имеет большую кодовую базу C ++ (как я), больше не поддерживает нативную разработку. Хотя я нашел домыслы об отмене этого решения, я сомневаюсь в этом. Поэтому я подумал, насколько целесообразным было бы сделать эту кодовую базу доступной для Phone 7, адаптировав ее для компиляции в C ++ / CLI. Конечно, части пользовательского интерфейса не могли быть перенесены, но я не уверен насчет остальных. У кого-нибудь был подобный опыт? Я не говорю о коде, который выполняет тяжелые низкоуровневые вещи - но довольно часто используются шаблоны и умные указатели.

Ответы [ 6 ]

11 голосов
/ 30 сентября 2010

c ++ / cli теоретически можно использовать с WPF / Silverlight, используя хитрость замены C #, сгенерированного из XAML, на макроопределение, которое можно использовать внутри основного класса в коде файла. Я разработал эту технику, но у меня не было мотивации выходить за рамки теории - я очень счастлив, смешивая языки.

Что касается использования c ++ / cli в чистом безопасном режиме для вашего логического кода, это все еще может быть невозможным, но я бы хотел услышать, как кто-то пытается это сделать сейчас. Исследуя его для Silverlight в 2008 году, я нашел этот пугающий комментарий на форуме silverlight :

Я только что попробовал Silverlight & C ++, скомпилировав MSIL из моего проекта C ++ в Silverlight-совместимую DLL. Хорошая новость: это работает, и вы можете вызвать этот код из проекта Silverlight. Плохая новость: компилятор C ++, очевидно, использует инструкции MSIL, которые Silverlight запрещает.

Итак, если вы попробуете это, даже с простейшими программами, вы почти сразу получите исключение «Операция может дестабилизировать среду выполнения.» Мне это кажется менее скорее всего, скоро мы увидим Silverlight для C ++, так как компилятору придется вести себя немного иначе.

11 голосов
/ 16 марта 2010

Вы можете создать проверяемый управляемый код в C ++ / CLI с помощью параметра / clr: safe. Проблема в том, что большая часть вашего обычного кода на С ++ не будет компилироваться с этой опцией.

9 голосов
/ 21 мая 2010

C # в настоящее время является единственным поддерживаемым языком для WinPhone7.

Я полностью ожидаю, что MS добавит поддержку VB и C ++ / CLI в будущем, но не ожидаю, что скоро открою кимоно с собственным кодом.

В собственном коде слишком много проблем, которые необходимо преодолеть, в частности, в отношении безопасности, надежности и т. Д. Управляемый код легче проверять статически, а FAR легче контролировать во время работы.

Если вы расстроены переносом кода C ++ на C #, просто порадуйтесь, что MS не заставил вас перейти на Objective-C;)

Исходя из нашего собственного опыта, процесс переноса хорошо написанного C ++ на C # на самом деле требует гораздо меньше усилий, чем можно было бы сначала ожидать. Конечно, есть кривая обучения, но у вас есть это с любым портом. На самом деле мы получили так много преимуществ от переноса нашего основного приложения и механизмов обработки данных на C #, что мы переобучили всю нашу команду программировать на C # и перенести наш C # обратно на C ++, где это необходимо, а не наоборот! Пока что мы только перенесли два модуля обратно в C ++ и вместо этого вызываем наш код C # из нашего собственного кода через взаимодействие.

Опять же, помните, WinPhone - это новая платформа, использующая лучшие в своем классе, высокопроизводительные инструменты и платформы для разработки нового поколения. Это не WinMo твоего отца.

Если поддержка C ++ - это то, что вы считаете крайне важным, то убедитесь, что MS знает - (с уважением и профессионально) изложит вашу позицию на форумах MSDN и на ближайших к вам мероприятиях разработчиков.

Обновление 1: 2012-12-17:

Хотя родной C ++ до сих пор официально не поддерживается для Windows Phone 7, Windows Phone 8 теперь поддерживает собственный код C ++, так что вы можете легче перенести существующие кодовые базы C ++ на Windows Phone 8 (а также на Windows 8 и Windows). настольные приложения).

Несмотря на то, что на данный момент нет 100% совместимости между платформами Windows8 / Phone8 и API, я ожидаю, что эти две платформы станут более интегрированными в течение следующих нескольких выпусков.

Это особенно верно сейчас, когда один из ключевых барьеров для более тесного сотрудничества между Windows и другими группами в Microsoft недавно покинул компанию;)

Обновление2: 15.04.2014:

Согласно недавним анонсам на // BUILD / 2014, теперь вы можете приступить к созданию «универсальных» приложений на C ++ и XAML, C # / VB & XAML или JavaScript & HTML, которые будут работать на Windows 8.1, Windows Phone 8.1 и Xbox Один! Подробнее о создании универсальных приложений для Windows Phone 8.1, , читайте в этой статье .

3 голосов
/ 16 марта 2010

Вся идея разработки основана на Silverlight. Я думаю, что вы можете добавить свою управляемую dll, написанную на C ++, без каких-либо проблем в этот проект Silverlight, но он не может использовать собственный код.

Я планирую установить инструменты на мою машину сегодня вечером и попробую это.

2 голосов
/ 15 июня 2010

Хорошо, если MS решит покинуть путь и создать что-то новое, это решение MS. Итак, давайте посмотрим правде в глаза. Silverlight пока не имеет успеха. MS потеряла значительную долю благодаря Apple, Android и RIM. Разработчики приложений просто должны оценить экономическое обоснование для своих собственных приложений и решить, доверяют ли они получению доли в Windows 7 или нет. Для компании, которую я возглавляю, мы решили больше не поддерживать телефон MS Windows 7 не по той или иной технической причине, а просто потому, что мы не верим в возврат наших инвестиций в порт. Мы начнем поддерживать Apple, Symbian, Andoid и MeeGo в будущем, если увидим рыночный успех этой новой платформы. Все они поддерживают C / C ++ и позволяют нам повторно использовать наши проверенные ядра приложений. Так зачем вообще беспокоиться. Персональные технологические предпочтения не должны быть стробируемыми. Если личные предпочтения волнуют, то я бы вышвырнул MS за их уродливый интерфейс.

Thomas

1 голос
/ 02 марта 2012

Это на горизонте наконец !

Итак, опрос отправил разработчикам Windows Phone об их будущем предпочтения развития и XNA не упоминается ни разу в опросе (A опрос отправлен разработчикам Windows Phone - я уже говорил)

Однако они спрашивают:

Как бы вы предпочли использовать C ++ в своих мобильных приложениях / играх?

  • Разработка приложений / игр на C ++ сверху вниз (пользовательский интерфейс, бизнес-логика и платформа) API)
  • Используйте C ++ для бизнес-логики, а затем напишите уровень абстракции платформы
  • Использовать C ++ для бизнес-логики, использовать сторонние механизмы исполнения
  • Я не хочу использовать C ++
...