Ранее на этой неделе Кенни Керр представил C++/WinRT на CppCon 20161. Это стандартная проекция C++ для среды выполнения Windows, основанная на Modern.
Насколько я понимаю, компилятор/препроцессор/код C++/CX генератор не затрагивает стандартный код C++, а поскольку C++/WinRT является стандартной библиотекой C++, моя наивная интерпретация состоит в том, что и C++/CX, и C++/WinRT можно использовать в одном проекте.
Вопросы:
- Перво-наперво: верна ли моя наивная интерпретация?
- Если да, то можно ли использовать C++/CX и C++/WinRT в одной и той же единице компиляции?
- С какой степенью детализации можно смешивать C++/CX и C++/WinRT, если они не могут находиться в одной и той же единице компиляции?
- Может ли C++/WinRT использовать типы, реализованные с помощью C++/CX, в одном проекте? (Я ожидаю, что это будет сложно, поскольку компилятору C++/WinRT необходимо генерировать заголовки из метаданных .winmd, поэтому существует зависимость от (до)вывода компилятора.)
Если это важно, ответы на эти вопросы позволяют мне уже сейчас принимать решения о том, как перенести мои проекты C++/CX в будущее.
1 Стандартный C++ для среда выполнения Windows (на YouTube).
ref class
es, а также метаданных .winmd, поэтому использование кодаref class
из C++/WinRT в одной и той же единице компиляции может оказаться затруднительным. При компиляции кода требуется ввод .winmd, который является продуктом компиляции. Кроме того, я не знаю, создает ли компилятор C++/CX какой-либо код из импортированных данных .winmd, который (потенциально) конфликтует с C++/WinRT#include
s. - person IInspectable   schedule 27.09.2016