Я очень хорошо знаю, что такое родная DLL для Win32 (без UWP, без RT, без CLR). Я также знаю DLL на основе C++/CLI, которые должны поддерживать программы, совместимые с .NET, написанные на любом языке.
Меня смущают эти два типа DLL UWP:
Когда создается библиотека DLL на основе компонентов UWP, она добавляет (позволяет) экспортировать классы (частично вопрос: являются ли они классами жалоб CLR?). Dependency Walker показывает, что он связан с некоторыми нестандартными/неродными DLL.
Когда создается DLL на основе UWP CX, это просто собственная DLL. Dependency Walker показывает, что он связан с Kernel32.DLL и т. д.
Отсюда я делаю вывод, что:
Итак, что же представляют собой эти два новых типа библиотек DLL UWP?
Кенни Керр опубликовал две отличные статьи Windows с C++ — модель приложений среды выполнения Windows и Windows с C++ — компоненты среды выполнения Windows. Они сформируют прочную основу и избавят от путаницы.
Оба они являются нативным кодом. Синтаксис C++/CX имеет общий с C++/CLI синтаксис, но не связан с .NET. Компонент среды выполнения Windows — это повторно используемый компонент, который можно вызывать из других приложений на любом поддерживаемом языке (C++, C#, VB, JavaScript). Другой проект — это просто отдельное приложение.
Обратите внимание, что зависимости CLR присутствуют только в сборках отладки (из-за некоторых зависимостей отладки XAML); в сборках Release нет зависимостей CLR.
UWP — это нативный код, это просто новый набор библиотек, недоступный в классическом стиле API. Однако вы можете использовать его в приложении Win32. CX устарел в пользу C++/WinRT.