gpt4 book ai didi

c# - 从 Windows 应用商店应用项目引用 C++ WinRT 组件

转载 作者:太空狗 更新时间:2023-10-29 21:00:54 24 4
gpt4 key购买 nike

我有一个 Windows 应用商店应用程序项目。在这个项目中,我想引用一个用 C++ 编写的 Windows 运行时组件。该组件可作为 DLL + WinMD 组合使用。但是我不知道该怎么做。我尝试将应用程序 VS 项目的文件引用添加到 DLL 和 WinMD 文件,但我收到一条错误消息,指出无法添加 DLL。然后我尝试将它作为二进制文件添加到输出目录,但仍然没有成功。

我没有此 WinRT 组件的源代码。我知道如果我有 WinRT 组件的 VS 项目,那么我可以简单地将我的应用程序项目的引用添加到 WinRT 组件项目,一切正常。但在松散的 WinMD/DLL 文件的情况下,它不起作用。

我该怎么做?

最佳答案

用 C# 编写的 WinRT 组件只生成一个文件,即包含元数据和组件实现的 winmd 文件。此外,同一文件可用于所有架构(x86、x64 和 ARM)。

但是,用 C++ 编写的 WinRT 组件会生成两个文件 - 一个包含元数据的 winmd 文件和一个包含实现的 DLL 文件。此外,DLL 文件在每个体系结构中都是独立的(x86、x64 和 ARM 各一个)。正是出于这个原因:

  • 仅添加对 winmd 文件的引用没有意义(因为实现是在 DLL 中)
  • 添加对单个 DLL 文件的引用没有意义,因为根据您的项目配置/架构需要不同的 DLL

当您将应用程序 VS 项目的引用添加到组件 VS 项目时,VS 项目系统会为您处理上述所有复杂情况。但是,当您没有组件的源/项目时,您可以使用 Extension SDK机制。如果所有三种体系结构的 DLL + WinMD 组合都打包为扩展 SDK,则 VS 能够正确地将正确的配置/体系结构特定组件添加到应用程序输出中。

有关 C++ WinRT 扩展 SDK 的真实示例,请查看 Bing Maps SDK .安装 SDK,然后转到以下文件夹以查看扩展 SDK 的结构:

C:\Users\\AppData\Local\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\Bing.Maps.Xaml\1.313.0825.0

请注意,您不一定需要在要使用项目的每台机器上都安装扩展 SDK。目前,ESDK 是一个机器范围的实体(与 NuGet 不同),但可以使用 instructions here 为每个项目制作它们.

关于c# - 从 Windows 应用商店应用项目引用 C++ WinRT 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20427711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com