Как устранить ошибку "REGDB_E_CLASSNOTREG" при загрузке модели ONNX в WinML

Я пытаюсь воспроизвести учебник по WinML, описанный в https://docs.microsoft.com/en-us/windows/ai/windows-ml/get-started-desktop и мне нужна помощь в устранении ошибки "Место чтения нарушения доступа" при загрузке модели.

Установил Visual studio 2017, Windows 10, сборка версии 17763 и следовал инструкциям в руководстве. Задаваясь вопросом, может ли это быть связано с проблемой контроля доступа, я попытался поместить файл ONNX в нескольких местах, даже внутри папки решения, попробовал вариант Debug x64 и x86, изменил разрешение файла, но все равно не работает.

void LoadModel()
{
    // load the model
    printf("Loading modelfile '%ws' on the '%s' device\n", modelPath.c_str(), deviceName.c_str());
    DWORD ticks = GetTickCount();
    model = LearningModel::LoadFromFilePath(modelPath);  //FAILS here.
    ticks = GetTickCount() - ticks;
    printf("model file loaded in %d ticks\n", ticks);
}

Я ожидал LearningModel::LoadFromFilePath(modelPath); чтобы добиться успеха и вернуть действительный дескриптор.

После дальнейшей отладки WINRT_RoGetActivationFactory в приведенном ниже коде возвращает REGDB_E_CLASSNOTREG класс не зарегистрирован

namespace winrt
{
    template <typename Interface = Windows::Foundation::IActivationFactory>
    impl::com_ref<Interface> get_activation_factory(param::hstring const& name)
    {
        void* result{};
        hresult hr = WINRT_RoGetActivationFactory(get_abi(name), guid_of<Interface>(), &result);

0 ответов

Сообщение об ошибке "REGDB_E_CLASSNOTREG" связано не с именем файла, а с невозможностью найти реализацию объекта LearningModel. (если возникнут проблемы с файлами, вы получите ошибку "файл не найден" или другую строку.) Убедитесь, что у вас есть правильный SDK (Windows SDK, сборка 17763 или более поздняя) и версия ОС Windows ( Windows 10, версия 1809 или позже).

Другие вопросы по тегам