如何从 C++/WinRT 库中导出数据、函数、类

问题描述

通常我们对 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 可以完成其工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...