Как добавить ссылку на Windows Runtime Component (C ++ / WinRT) в моем. Net Framework проекте - PullRequest
1 голос
/ 06 марта 2020

Я запускаю 2 проекта в одном решении, один - .Net Framework 4.7.2, а другой - Windows Runtime Component(C++/WinRT),

. Я хочу написать свой код, связанный с DirectX, в WindowsRuntimeComponent и выставить определенное количество классов в проекте .NetFramework.

Я просто добавляю ссылку на проект WindowsRuntimeComponent в. Net проекте. Это был успех, и. Net, кажется, понимает, что в проект C ++ Однако, когда я пытаюсь создать экземпляр из WindowsRuntimeComponent,

, он выдает ошибку, говорящую ...

Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG) снимок экрана с ошибкой

Я новичок в COM, и в основном все, что я знаю о COM, это форма введите описание ссылки здесь Итак, как мне это сделать?

1 Ответ

0 голосов
/ 10 марта 2020

Чтобы создать экземпляр класса через WinRT (класс, созданный вами в C ++ / CX), вам нужно объявить его в своем манифесте или иначе Windows не будет знать, какой файл .dll искать (и это приведет к REGDB_E_CLASSNOTREG HRESULT / ClassNotRegistered исключение).

До недавнего времени это было доступно только для приложений UWP, и им приходилось объявлять эти зависимости в своем файле AppXManifest. xml. Однако последние версии Windows поддерживают объявление этих зависимостей в манифесте Win32. Вот как вы это делаете:

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
    <file name="RuntimeComponent1.dll">
        <activatableClass name="RuntimeComponent1.Class" threadingModel="both" xmlns="urn:schemas-microsoft-com:winrt.v1" />
    </file>
</assembly>

Подробнее об этом можно прочитать здесь:

https://blogs.windows.com/windowsdeveloper/2019/04/30/enhancing-non-packaged-desktop-apps-using-windows-runtime-components/

...