【问题标题】:How to reference C# UWP Class Library from C++ UWP App如何从 C++ UWP App 引用 C# UWP 类库
【发布时间】:2020-09-07 11:23:17
【问题描述】:

我在尝试从 C++ UWP 应用程序引用 C# UWP 类库中的方法时收到 COMException。这发生在最基本的设置中,所以我一定做错了什么。

复制:

  1. 使用 Visual Studio(我使用的是 16.5.4),新建一个“空白应用(通用 Windows - c++/CX)”
  2. 向解决方案添加一个新的“Windows 运行时组件(通用 Windows)”,C#,称为“ClassLib”
  3. 将此方法添加到 Class1.cs:public static int GetNumber() { return 22; }
  4. 将 MainPage 构造函数修改为如下所示:
using namespace ClassLib;
MainPage::MainPage()
{
    InitializeComponent();

    auto foo = Class1::GetNumber();
}
  1. 执行应用程序。此异常发生在 MainPage 构造函数中:
Exception thrown at 0x76984402 in UWPApp.exe: 
  Microsoft C++ exception: 
    Platform::COMException ^ at memory location 0x0421DD44. 
    HRESULT:0x80131040 The text associated with this error code could not be found.

【问题讨论】:

  • 下面的答案有帮助吗?你的问题解决了吗?
  • 您好,您的问题解决了吗?我也面临同样的问题。

标签: c# c++ uwp win-universal-app c++-cx


【解决方案1】:

此问题是由于从 C++/CX 或 C++ WinRT 项目调用基于 .net 的 WinRT 组件所致。要使其工作,您可以在您的 c++/cx 项目中添加 Microsoft.Net.Native.Compiler nuget 包并首先安装它。然后右键单击项目 -> 卸载项目 -> 编辑 .vcxproj。之后,在其中添加以下属性。

<PropertyGroup>
    <UseDotNetNativeToolchain Condition="'$(Configuration)'=='Release'">true</UseDotNetNativeToolchain>
    <DotNetNativeVersion>2.2.3</DotNetNativeVersion>
</PropertyGroup>

注意,将上面的2.2.3版本替换为你安装的Microsoft.Net.Native.Compiler nuget包的版本。更多详情可以参考这个类似的thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多