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

标签 c# c++ clr-hosting

问题的内容差不多。 我有一个运行的 .net exe,然后加载我的库(在 C++ 中)。有什么方法可以获取 mscoree 在启动 .net exe 时加载的 ICLRMetaHost 或类似接口(interface)? 我想这样做主要是为了可以从我的 native 库访问 gc 和内存相关设置以进行调试。

奖励积分指出使用单一托管 api 的类似实现。

最佳答案

我不明白为什么获取 ICLRMetaHost 的正常方法在 CLR 加载的 DLL 中不起作用...

  1. 在 mscoree.dll 上加载库
  2. 找到 CLRCreateInstance 的地址。
  3. 调用 CLRCreateInstance 如图所示 here 获取 ICLRMetaHost
  4. 调用 EnumerateLoadedRuntimes 并希望只有一个加载...
  5. 从枚举的运行时信息中获取 ICLRRuntimeHost
  6. ICLRRuntimeHost获取ICLRControl
  7. ICLRControl获取ICLRGCManager

关于c# - 有没有办法从 C++ 库中获取 ICLRMetaHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592274/

相关文章:

c# - Sitecore 7 启用 LINQ 扩展

c++ - 托管 CLR - 参数错误

c# - CLR 托管 : Call a function with an arbitrary method signature?

c - 是否可以在 C 程序中承载 CLR?

c# - 从坏表列命名 C# 类

c# - GridView : Cant remove borders

c# - 将段落内的超链接绑定(bind)到命令 (MVVM)

c++ - C++关键字 "const"使用建议

c++ - OpenCV C++ : Conversion from CV_32F to CV8U using converTo is giving unexpected values

c++ - 这是在 C++11 中使用 unique_ptr 和移动语义实现 pimpl 的正确方法吗