Подтвердить что ты не робот

Windows Phone 7 и собственный С++/CLI

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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

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

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

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

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

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

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

Обновление2: 4/15/2014:

В соответствии с недавними объявлениями на //BUILD/ 2014 вы можете начать создавать "универсальные" приложения на С++ и XAML, С#/VB и XAML или JavaScript и HTML, которые будут работать в Windows 8.1, Windows Phone 8.1 и Xbox Один! Для получения дополнительной информации о создании универсальных приложений Windows Phone 8.1 прочитать эту статью.

Ответ 4

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

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

Ответ 5

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

Томас

Ответ 6

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

Итак, опрос, отправленный разработчикам оконных телефонов о своем будущем предпочтения в области развития и XNA не упоминаются один раз в Обзоре (A опрос, отправленный разработчикам оконных телефонов - я упоминал об этом)

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

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

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