【问题标题】:Can a C# desktop application use UWP components? [duplicate]C# 桌面应用程序可以使用 UWP 组件吗? [复制]
【发布时间】:2016-02-08 22:35:45
【问题描述】:

我有一个带有 C++/CX 包装器的 C++ 库。我可以在 C# 桌面项目中引用包装器并使用它吗?

我尝试以通常的方式添加引用。我可以选择项目并添加引用,但它有一个黄色感叹号。 IntelliSense 确实可以工作并且可以正常编译,但是当我运行它时,我得到一个 TypeLoadException 指示找不到 Windows 运行时类型 - 即使我在那里手动复制了 dll。

some articles 解释了如何设置与 Windows 8 项目类似的东西,但我的项目中没有像这样显示 Windows 选项卡。

【问题讨论】:

  • 那是另一种情况,使用来自本机 Win32 代码的组件,而我想从 CLR 中使用它。
  • Win32 vs. CLR 不会影响这一点。自定义 Windows 运行时组件仅在 Windows 运行时应用程序中受支持,而不在桌面应用程序中受支持,原因是拉曼在另一个线程中解释了
  • 那就清楚了。谢谢。

标签: c# windows-runtime uwp c++-cx


【解决方案1】:

正如 Rob 已经评论的那样,没有办法从桌面 .NET 应用程序中使用自定义 winrt 组件(至少现在没有办法这样做......)。

但您可以通过 PInvoke 或 C++/CLI 在 .NET 应用程序中直接使用 C++(不是 C++/CX!)

看到这个: http://www.codeproject.com/Articles/403285/P-Invoke-Tutorial-Basics-Part

【讨论】:

  • 我相信 Rob 的评论指的是不同的设置(Win32 与 CLR)。 P/Invoke 是一个很棒的功能,但它只允许您使用通过 C API 公开的 C++ 代码。 C++/CLI 听起来是个不错的选择;桌面和 Windows 运行时 .NET 应用程序都支持吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 2016-12-23
  • 2019-12-05
相关资源
最近更新 更多