有没有办法从c ++库中获取ICLRMetaHost

时间:2013-12-15 07:29:39

标签: c# c++ clr-hosting

几乎所说的问题。 我有一个运行的.net exe,然后加载我的库(用c ++)。有没有办法获得ICLRMetaHost或类似的接口,mscoree在启动.net exe时加载? 我想这样做主要是因为我可以从我的本机库访问gc和内存相关的设置以进行调试。

使用mono hosting api指出类似实现的奖励点。

1 个答案:

答案 0 :(得分:2)

我不知道为什么获取ICLRMetaHost的正常方式无法在CLR加载的DLL中起作用...

  1. mscoree.dll上的LoadLibrary
  2. 找到CLRCreateInstance
  3. 的地址
  4. 如图here所示致电CLRCreateInstance 抓住ICLRMetaHost
  5. 致电EnumerateLoadedRuntimes,希望只有一个人加载...
  6. 来自枚举的运行时信息的
  7. 获取ICLRRuntimeHost
  8. 来自ICLRRuntimeHost获取ICLRControl
  9. 来自ICLRControl获取ICLRGCManager