区别:本机 DLL、UWP DLL 和 C++/CLI DLL
Difference Between: Native DLL, UWP DLLs and C++/CLI DLLs
我非常清楚什么是 vanilla Win32 本机 DLL(没有 UWP、没有 RT、没有 CLR)。我还知道基于 C++/CLI 的 DLL,它们支持以任何语言编写的 .NET 兼容程序。
让我困惑的是这两种 UWP DLL 类型:
- 通用Windows - C++/CX
- 通用 Windows - Windows 运行时组件
创建基于 UWP 组件的 DLL 时,它会添加(允许)导出 类(部分问题是:它们是否符合 CLR 要求 类?)。 Dependency Walker 显示它链接到一些 non-standard/non-native DLL。
创建基于 UWP CX 的 DLL 时,它只是一个本机 DLL。 Dependency Walker 显示它链接到 Kernel32.DLL 等
据此,我得出结论:
- C++/CX 是一个类似于原生 DLL 的 UWP DLL
- 运行时组件 UWP DLL 类似于 C++/CLI 类型的 DLL。
那么这两种新型UWP DLL到底是什么?
两者都是本机代码。 C++/CX 与 C++/CLI 共享一些语法,但它与 .NET 没有关系。 Windows 运行时组件是一个 re-usable 组件,可以从任何支持的语言(C++、C#、VB、JavaScript)的其他应用程序调用。另一个项目只是一个 stand-alone 应用程序。
请注意,CLR 依赖项仅存在于调试版本中(由于某些 XAML 调试依赖项);在发布版本中没有 CLR 依赖项。
我非常清楚什么是 vanilla Win32 本机 DLL(没有 UWP、没有 RT、没有 CLR)。我还知道基于 C++/CLI 的 DLL,它们支持以任何语言编写的 .NET 兼容程序。
让我困惑的是这两种 UWP DLL 类型:
- 通用Windows - C++/CX
- 通用 Windows - Windows 运行时组件
创建基于 UWP 组件的 DLL 时,它会添加(允许)导出 类(部分问题是:它们是否符合 CLR 要求 类?)。 Dependency Walker 显示它链接到一些 non-standard/non-native DLL。
创建基于 UWP CX 的 DLL 时,它只是一个本机 DLL。 Dependency Walker 显示它链接到 Kernel32.DLL 等
据此,我得出结论:
- C++/CX 是一个类似于原生 DLL 的 UWP DLL
- 运行时组件 UWP DLL 类似于 C++/CLI 类型的 DLL。
那么这两种新型UWP DLL到底是什么?
两者都是本机代码。 C++/CX 与 C++/CLI 共享一些语法,但它与 .NET 没有关系。 Windows 运行时组件是一个 re-usable 组件,可以从任何支持的语言(C++、C#、VB、JavaScript)的其他应用程序调用。另一个项目只是一个 stand-alone 应用程序。
请注意,CLR 依赖项仅存在于调试版本中(由于某些 XAML 调试依赖项);在发布版本中没有 CLR 依赖项。