我正在尝试重现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);