0

我正在尝试重现https://docs.microsoft.com/en-us/windows/ai/windows-ml/get-started-desktop中描述的 WinML 教程,需要帮助解决“访问冲突读取位置”错误在加载模型时。

安装 Visual Studio 2017、Windows 10、内部版本 17763 并按照教程中的说明进行操作。想知道是否可能是由于访问控制问题,我尝试将 ONNX 文件放在多个位置,甚至在解决方案文件夹中,尝试调试 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 Class not registered

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);
4

1 回答 1

0

错误消息“REGDB_E_CLASSNOTREG”与文件名无关,而是关于无法找到 LearningModel 对象的实现。(如果存在文件问题,您会收到文件未找到错误或其他字符串。)请确保您拥有正确的 SDK(Windows SDK,内部版本 17763 或更高版本)和 Windows 操作系统版本(Windows 10,版本 1809 或后来)。

于 2019-10-07T23:04:35.663 回答