Mar*_*wis 7 c c++ windows-runtime
我想从C或C++对WinRT对象进行动态(即基于反射)调用.我将假设我在运行时可以使用winmd文件,以便我可以找出方法是什么以及它们采用了什么参数.
在OLE自动化中,IDispatch随后可用于进行实际调用.但是,WinRT对象不支持IDispatch.我怎么才能打电话?根据处理器的COM调用约定,我是否需要某种允许动态传递参数的FFI库?或者我真的需要"静态"类/结构声明(对于C/C++)?
编辑:目标系统是一个地铁风格的应用程序.这排除了涉及禁用API的解决方案.
当然可以构建您所描述的内容 - 在幕后,这正是 Chakra Javascript 引擎使用 winrt 元数据所做的事情,并且与 CLR 所做的类似。这两种语言投影都会在运行时发现 API,并构建低级程序集来实现这一点。
这是一项繁重的工作,而且并不是特别令人愉快,但在技术上绝对是可行的。Windows 元数据包含为 API 和结构创建存根所需的所有信息。