gpt4 book ai didi

c# - 使用 Visual C++ 创建的 WinRT DLL 不会在 Windows 应用商店应用程序中加载

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:11 36 4
gpt4 key购买 nike

我正在使用 Visual Studio 2012 编写一个 Windows 8 应用商店应用程序。主应用程序是一个 XAML/C# 应用程序,但它也使用一个使用 C++/CX 编写的 WinRT 组件。对于 WinRT 组件,我使用“新建项目”对话框中名为“DLL(Windows 应用商店应用程序)”的 VS 项目模板。有了这个项目后,我将其更改为包含具有单个 ref 类的单个命名空间。我的 C# 项目包含对此 C++ 项目的引用。

但是,当我尝试运行我的应用程序时,C# 代码在它尝试实例化/激活 C++ ref 类时抛出异常。我什至在 MSDN 样本上也看到过几个这样的工作示例。我已验证 WinRT 组件 DLL 和 winmd 文件已正确复制到最终应用程序包中,并且应用程序的 AppxManifest.xml 已使用 WinRT 类的正确注册信息进行了正确更新。然而它仍然失败。

不知道怎么回事。我该如何解决这个错误?

最佳答案

Windows 运行时组件二进制文件需要具有以下两个导出: DllCanUnloadNow DllGetActivationFactory

当您使用 VS 项目模板“DLL(Windows 应用商店应用程序)”时,您的项目没有定义导致编译器将上述两个导出放入二进制文件中的必要宏。在项目设置下,您会注意到宏集是 _WINDLL。您需要将其更改为 _WINRT_DLL。

或者,使用 C++/CX 创建 WinRT 组件的正确方法是使用 Visual C++ -> Windows 应用商店下名为“Windows 运行时组件”的 VS 项目模板。使用它将创建一个项目,该项目已经使用正确的项目设置等进行了正确设置,以创建正确的 WinRT 二进制文件。

关于c# - 使用 Visual C++ 创建的 WinRT DLL 不会在 Windows 应用商店应用程序中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14065795/

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