В Visual Studio 2015 я создал C # «Windows Runtime Component (Windows 8.1)», который я хотел бы использовать в своем родном проекте Win32 C ++. Я сгенерировал необходимые заголовочные файлы для моего компонента WinRT, используя инструменты «winmdidl» и «midlrt». Но когда я пытаюсь активировать соответствующий интерфейс в своем коде Win32 C ++, используя библиотеку шаблонов Windows Runtime C ++ (WRL), я получаю код HRESULT 0x80040154 («Класс не зарегистрирован»).
Как я могу зарегистрировать свой компонент Windows Runtime?
Win32 C ++ код:
#include "WindowsRuntimeComponent1.h"using namespace WindowsRuntimeComponent1;
...
RoInitializeWrapper initialize(RO_INIT_MULTITHREADED);
if (FAILED(initialize))
{
return PrintError(__LINE__, initialize);
}
ComPtr<IClass1Class> o1;
HRESULT hr = GetActivationFactory(HStringReference(RuntimeClass_WindowsRuntimeComponent1_Class1).Get(), &o1);
if (FAILED(hr))
{
return PrintError(__LINE__, hr); // returns 0x80040154 ("Class not registered")
}
Я попробовал следующее без успеха:
Я использую Windows 10.
Примечание: я пытаюсь интегрировать компонент WinRT с моим приложением Win32, потому что я хотел бы использовать Windows Runtime API «Windows.UI.Input.Inking» для распознавания рукописного ввода. Я пытался использовать этот API в своем коде Win32 C ++ напрямую (с использованием WRL), но получил код HRESULT 0x80004002 («Такой интерфейс не поддерживается»).
Задача ещё не решена.
Других решений пока нет …