Есть ли способ получить ICLRMetaHost из библиотеки C ++

В значительной степени то, что говорится в вопросе.
У меня есть .NET EXE, который запускается, а затем загружает мою библиотеку (в C ++). Есть ли способ получить ICLRMetaHost или аналогичный интерфейс, который mscoree загружает при запуске .net exe?
Я хочу сделать это в первую очередь, чтобы получить доступ к настройкам gc и памяти из моей собственной библиотеки для целей отладки.

Бонусные баллы указывают на аналогичную реализацию с использованием моно-хостинга API.

1

Решение

Я не понимаю, почему нормальный способ получения ICLRMetaHost не будет работать изнутри DLL, которая была загружена CLR …

  1. Загрузить библиотеку на mscoree.dll
  2. Найти адрес CLRCreateInstance,
  3. вызов CLRCreateInstance как показано Вот
    завладеть ICLRMetaHost,
  4. вызов EnumerateLoadedRuntimes и надеюсь, что там только один загружен …
  5. из вашей перечисленной информации времени выполнения получить ICLRRuntimeHost,
  6. от ICLRRuntimeHost получать ICLRControl
  7. от ICLRControl получать ICLRGCManager
2

Другие решения

Других решений пока нет …