我在一个解决方案中启动了两个项目,一个是.Net Framework 4.7.2
,另一个是Windows Runtime Component(C++/WinRT)
,
我想做的是在WindowsRuntimeComponent
中编写与DirectX相关的代码,并向.NetFramework
项目公开一定数量的类。
我只是在.Net项目中添加了对WindowsRuntimeComponent
项目的引用,这是成功的,并且.Net似乎了解C++项目中的内容
但是,当我尝试从WindowsRuntimeComponent
创建实例时,
它给我一个错误说...
Class not registered(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG) error screenshot
我是COM的新手,基本上我所了解的COM都是enter link description here形式
那我该怎么办呢?
最佳答案
要通过WinRT实例化一个类(您在C++ / CX中创建的类),您需要在 list 中声明它,否则Windows将不知道要查找哪个.dll文件(这将导致REGDB_E_CLASSNOTREG HRESULT / ClassNotRegistered异常) 。
直到最近,这仅适用于UWP应用程序,并且他们必须在其AppXManifest.xml文件中声明这些依赖项。但是,最新的Windows版本支持在Win32 list 中声明这些依赖关系。这是您的操作方式:
<?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/
关于c# - 如何在我的.Net Framework项目中添加对Windows运行时组件(C++/WinRT)的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60560812/