Как устранить ошибку "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 или позже).