Как устранить ошибку «REGDB_E_CLASSNOTREG» при загрузке модели ONNX в WinML - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь воспроизвести учебник по 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);
...