问题描述
通常我们对 C++ 库使用 dllexport/dllimport 方法。然后,测试应用程序可以隐式/显式地使用 dll 来访问 dll 函数。 我们也可以使用 c++/winRT 中的 .winmd 文件来访问类、使用测试应用程序的函数。
那么这两个概念有什么区别呢? 哪个更适合 c++/WinRT 库(dll)。
解决方法
dllexport and dllimport 允许从 PE 图像导出符号,并使用 load-time dynamic linking 导入。想要使用符号的客户端代码需要知道这些符号的名称。
另一方面,WinMD 文件为类型提供元数据,包括它们在内存中的布局、可见性或名称。 WinMD 元数据不与模块级导出/导入机制竞争,它是互补的。
这个问题,哪个更好,因此没有意义。对于 Windows 运行时组件,您通常会提供描述类型的 WinMD 文件,但 PE 二进制文件仍需要导出某些符号,例如激活工厂,以便 RoGetActivationFactory 可以完成其工作。