Можно ли писать на обычном C++( не C++/CX) для WinRT?

Я сейчас изучаю C++. Узнал, что Microsoft развернула компанию по увеличению доли нативного кода, но когда начал узнавать дальше, оказалось, что у Microsoft есть свой вариант C++, который значительно отличается от стандартного.
Я так понимаю, что с помощью C++ можно сделать все, что угодно. И простой ответ на мой вопрос будет положительным. Но хотелось бы узнать более подробно.
1. Во взаимодействие с WinRT C++/CX дает дополнительные удобства или больше возможности?
2. Можно ли писать на обычном C++ под WinRT библиотеку, а потом ее использовать, например, для Android без особых изменений в исходном коде? (про перекомпиляцию, естественно я понимаю)

Спасибо!
  • Вопрос задан
  • 2887 просмотров
Решения вопроса 2
AxisPod
@AxisPod
1. C++/CX визуально похож на C++/Cli, но при этом компилирует сразу в машинный код, т.ч. код будет более эффективен в плане производительности.
2. Если вы не будете использовать расширение CX, то почему бы и нет. Но использовать только в чистом виде вроде как не получится. Вы можете сделать код на нативном C++, но для взаимодействия с системой всё же придется использовать расширение CX.
Ответ написан
Комментировать
Vinatorul
@Vinatorul
Developer
Если вы хотите использовать одну логику для работы на разных платформах, то самым лучшим вариантом будет написать на чистом C++. При этом реализовать свой блок-посредник для взаимодействия с WinRT. А когда вам понадобится использовать тот же код на другой платформе - реализовываете такой же посредник с таким же интерфейсом.
Таким образом основная логика даже не будет знать, на какой платформе она работает.
Паттерн стратегия
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dordzhiev
@dordzhiev
Да, можно отключить Component Extensions и делать все самому. WinRT - тот же самый COM. Для таких ситуаций есть специальный инструмент MIDL compiler. Он из IDL файла генерирует заголовок .h. А дальше все руками с помощью WRL.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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