首页 > 解决方案 > 如何从 C++/WinRT 库中导出数据、函数、类

问题描述

通常我们对 c++ 库使用 dllexport/dllimport 方法。然后测试应用程序可以隐式/显式地使用 dll 来访问 dll 函数。我们还可以利用 c++/winRT 中的 .winmd 文件来访问使用测试应用程序的类和函数。

那么这两个概念有什么区别呢?哪个更适合 c++/WinRT 库(dll)。

标签: c++c++17dllexportc++-winrtwinmd

解决方案


dllexport 和 dllimport允许从 PE 映像导出符号,并使用加载时动态链接导入。想要使用符号的客户端代码需要知道这些符号的名称。

另一方面, WinMD文件为类型提供元数据,包括它们在内存中的布局、可见性或名称。WinMD 元数据不与模块级导出/导入机制竞争,它是互补的。

这个问题,哪个更好,因此没有意义。对于 Windows 运行时组件,您通常会提供描述类型的 WinMD 文件,但 PE 二进制文件仍需要导出某些符号,例如激活工厂,以便RoGetActivationFactory可以完成其工作。


推荐阅读