问题的内容差不多。 我有一个运行的 .net exe,然后加载我的库(在 C++ 中)。有什么方法可以获取 mscoree 在启动 .net exe 时加载的 ICLRMetaHost 或类似接口(interface)? 我想这样做主要是为了可以从我的 native 库访问 gc 和内存相关设置以进行调试。
奖励积分指出使用单一托管 api 的类似实现。
最佳答案
我不明白为什么获取 ICLRMetaHost
的正常方法在 CLR 加载的 DLL 中不起作用...
- 在 mscoree.dll 上加载库
- 找到
CLRCreateInstance
的地址。 - 调用
CLRCreateInstance
如图所示 here 获取ICLRMetaHost
。 - 调用
EnumerateLoadedRuntimes
并希望只有一个加载... - 从枚举的运行时信息中获取
ICLRRuntimeHost
。 - 从
ICLRRuntimeHost
获取ICLRControl
- 从
ICLRControl
获取ICLRGCManager
关于c# - 有没有办法从 C++ 库中获取 ICLRMetaHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592274/