【发布时间】:2019-10-06 07:41:13
【问题描述】:
经过几天的试验,只取得了部分成功,我想问问我是否有机会,否则我总是会陷入死胡同。我有一个 UWP C# 应用程序,通常的框架,计划在 Windows 应用商店中分发。而且我还有一个我之前用过的用 C++(主要是 C)编写的数据包。旧的非托管代码根本不调用任何 Windows API,它只是一个数据格式包。但我需要直接从 C# 端访问它,它最重要的类型是作为值结构创作的,带有许多重载运算符(这很好,这种方法非常适合应用程序领域)。
从 WPF 应用程序中,我根本不会有任何问题,value struct 的 C++/CLI 包装器会暴露所有内容。但 UWP 应用不想这样做。如果我使用相同的 C++/CLI 包装器,虽然我可以让它自己编译,但 UWP 项目将完全拒绝引用 C++/CLI 项目。
我也尝试了较新的 C++/CX 风格,但它有很多限制,没有专门的构造函数,没有重载。它似乎比我需要的多得多。
有什么我错过的解决方案吗?也许仍然在 UWP 应用程序下以某种方式使用 C++/CLI(它的好处是已经编写好了:-))?
【问题讨论】:
-
您不能在 UWP 应用中使用 C++/CLI,它具有 .NETCore 无法提供的与 AppDomain 相关的异常托管要求。最近这种情况发生了变化,作为 .NETCore v3 的一部分,他们创建了一个名为 ijwhost 的新主机,它可以支持 C++/CLI。它现在处于预览阶段,它是否可以在 UWP 应用程序中运行是一个公平的延伸。如果你想避免背后的箭头,你需要 C++/CX。
-
哦,好吧。我还不知道我是否可以用/CX编译它,我开始尝试但有很多错误消息......