c++ - 对 WinRT 接口(interface)的动态调用

标签 c++ c windows-runtime

我想从 C 或 C++ 对 WinRT 对象进行动态(即基于反射)调用。我将假设我在运行时有可用的 winmd 文件,这样我就可以找出这些方法是什么以及它们采用什么参数。

在 OLE 自动化中,IDispatch 随后可用于进行实际调用。但是,WinRT 对象不支持 IDispatch。我怎样才能打电话?根据处理器的 COM 调用约定,我是否需要某种允许动态传递参数的 FFI 库?或者我真的需要“静态”类/结构声明(对于 C/C++)吗?

编辑:目标系统是一个 metro 风格的应用程序。这排除了涉及禁用 API 的解决方案。

最佳答案

当然可以构建您所描述的内容 - 在幕后,这正是 Chakra Javascript 引擎使用 winrt 元数据所做的事情,并且类似于 CLR 所做的事情。这两种语言预测都在运行时发现 API 并构建低级程序集来实现这一点。

这是一项繁重的工作,并不是特别愉快,但在技术上绝对可行。 Windows 元数据包含为 API 和结构创建 stub 所需的所有信息。

关于c++ - 对 WinRT 接口(interface)的动态调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459953/

相关文章:

c++ - OpenCV 中的奇怪数组错误

c - "error: assignment to expression with array type"是什么意思?

windows-runtime - Windows.Web.Http.HttpClient超时选项

c++ - 在排序的 std::list 中搜索的复杂性是什么?

c++ - 使用 CMake 查找 STC 模块 - C++/wxWidgets

c++ - 包含字符串值的结构在使用动态内存分配创建后在分配时导致段错误

C:检查最低有效字节和最高有效字节是否为 0 或 1

C 读取文件最后一行后崩溃

.net - 如何访问Windows.Management.Deployment命名空间?

c# - 使用Windows Phone 8.1媒体编辑API的音频合成