c# - 如何在我的.Net Framework项目中添加对Windows运行时组件(C++/WinRT)的引用

标签 c# c++ .net com windows-runtime

我在一个解决方案中启动了两个项目,一个是.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/

相关文章:

javascript - C# 和 Javascript 代码的计算有什么区别

c++ - 是否可以更改 Xcode 缩进注释行的方式?

c++ - 将 vector 初始化为整数列表

c++ - boost 错误 : not found boost_date_time-vc80-mt-1_41. dll

.net - .NET Framework 的命令行变量

c# - 在不使用同步机制的情况下从 2 个不同的线程写入共享资源

c# - 如果退出数组,从另一边进入

c# - EF Core 修改后的实体状态如何表现?

c# - 什么是 ServiceObjectiveId?

asp.net - 从 Visual Studio 代码添加对另一个项目的引用