none
Ошибка инициализации CLR RRS feed

  • Вопрос

  • Выполняю код:
    C++Выделить код
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    HRESULT hr;
        ICLRMetaHost    *pMetaHost = nullptr;
        ICLRRuntimeHost *pRuntimeHost = nullptr;
        ICLRRuntimeInfo *pRuntimeInfo = nullptr;
     
        hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_ICLRMetaHost, (LPVOID *) &pMetaHost);
        hr = pMetaHost->GetRuntime(L"v4.0.30319", IID_PPV_ARGS(&pRuntimeInfo));
        hr = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_PPV_ARGS(&pRuntimeHost));
        hr = pRuntimeHost->Start();
    Везде hr = 0 кроме последнего при вызове Start() hr = 1.

    На машине установлен .Net 4.6.1
    Если в GetRuntime поставить L"v2.0.50727", то вызов Start() проходит нормально, возвращая 0.

    В чем проблема?
    14 июля 2016 г. 20:07

Ответы

  • Везде hr = 0 кроме последнего при вызове Start() hr = 1
    1 - это S_FALSE, тоже признак успеха, только, как правило, свидетельствующий о том, что данная операция уже была выполнена прежде и повторное ее выполнение не требуется.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    15 июля 2016 г. 18:10
  • Это потому что вызов данного метода не требуется (как написано в MSDN).

    Так же используйте FAILED() или SUCCEEDED() макро для проверки ошибок. Как вам уже указали 1 вовсе не ошибка.

    Что до /clr то это на первый взгляд безобидный флаг коренным образом меняет язык программирования. Если вы хотите программировать на C++ то никаких /clr. Ошибка при линковке решается добавлением нужных библиотек.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    15 июля 2016 г. 22:08
    Модератор

Все ответы

  • Уверены что именно 1, а не что то из серии 0х80000000?

    https://msdn.microsoft.com/en-us/library/ms164415(v=vs.110).aspx


    This posting is provided "AS IS" with no warranties, and confers no rights.

    14 июля 2016 г. 22:14
    Модератор
  • Везде hr = 0 кроме последнего при вызове Start() hr = 1
    1 - это S_FALSE, тоже признак успеха, только, как правило, свидетельствующий о том, что данная операция уже была выполнена прежде и повторное ее выполнение не требуется.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    15 июля 2016 г. 18:10
  • Уверены что именно 1, а не что то из серии 0х80000000?

    https://msdn.microsoft.com/en-us/library/ms164415(v=vs.110).aspx


    This posting is provided "AS IS" with no warranties, and confers no rights.


    100%
    15 июля 2016 г. 18:47
  • Везде hr = 0 кроме последнего при вызове Start() hr = 1

    1 - это S_FALSE, тоже признак успеха, только, как правило, свидетельствующий о том, что данная операция уже была выполнена прежде и повторное ее выполнение не требуется.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    clr среда оказалась уже запущенной хотя я етого не делал. Возможно это потомучто указан флаг компилятора /clr. Без этого флага появляется ошибка линковки "LNK2019    ссылка на неразрешенный внешний символ _ CLRCreateInstance".

    Могу я сделать это все сам вручную без флага /clr?

    15 июля 2016 г. 19:43
  • Это потому что вызов данного метода не требуется (как написано в MSDN).

    Так же используйте FAILED() или SUCCEEDED() макро для проверки ошибок. Как вам уже указали 1 вовсе не ошибка.

    Что до /clr то это на первый взгляд безобидный флаг коренным образом меняет язык программирования. Если вы хотите программировать на C++ то никаких /clr. Ошибка при линковке решается добавлением нужных библиотек.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    15 июля 2016 г. 22:08
    Модератор
  • Ответы на любые вопросы, касающиеся технологий MS всегда можно найти в документации. Ключ /clr подключает требуемую библиотеку автоматически, способ подключения ее вручную описан в указанной мной статье.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    18 июля 2016 г. 18:22