代码之家  ›  专栏  ›  技术社区  ›  ljs TheVillageIdiot

如何从C#或F#访问IMetaDataEmit和其他元数据COM接口?

  •  1
  • ljs TheVillageIdiot  · 技术社区  · 17 年前

    我正在用F#编写一个编译器,我希望能够访问 unmanaged metadata COM interfaces 在教室里。net运行时。在别人提起之前, 反射发射不适合我的目的 ,我也不想使用元数据COM接口以外的任何其他方法。

    我进口了mscoree。tlb,但它似乎不包括我需要的接口。

    我感兴趣的界面包括 IMetaDataEmit .任何与此相关的示例代码都将非常有用,尽管我目前还没有找到任何示例代码。

    C样本就可以了,因为我可以很容易地将它们转换成F。

    提前感谢任何能帮我解答这个相当神秘的问题的人!

    更新: 现在,我已经通过使用接口guid编写显式的COM引用对其进行了排序!

    2 回复  |  直到 17 年前
        1
  •  1
  •   Charlie    17 年前

    这里的一个选项是创建自己的项目,并将这些接口(使用cor.h中的定义)编译到类型库中,然后将其tlbimp转换为托管程序集。我意识到将C头代码转换为IDL是相当繁琐的,但这可能是由一些文本处理脚本自动(或部分自动)完成的。

        2
  •  1
  •   Steve Steiner    17 年前

    我希望你找到了 mdbg sample 其中包括用于精确包装所需接口的源代码。