使用来自 UWP C# 应用的 C++/CLI/CX/etc 数据包
Using a C++/CLI/CX/etc data package from an UWP C# app
经过几天的试验只取得了部分成功,我想问问我是否有机会,否则我总是会陷入死胡同。我有一个 UWP C# 应用程序,通常的框架,计划在 Windows 商店中分发。而且我还有一个我之前用过的用C++(主要是C)写的数据包。旧的非托管代码根本不调用任何 Windows API,它只是一个数据格式包。但是我需要直接从 C# 端访问它,并且它最重要的类型被编写为值结构,具有许多重载运算符(这很好,这种方法非常适合应用程序域)。
从 WPF 应用程序,我根本不会有任何问题,一个 value struct
的 C++/CLI 包装器,公开所有内容。但 UWP 应用不想做同样的事情。如果我使用相同的 C++/CLI 包装器,虽然我可以让它自行编译,但 UWP 项目将拒绝引用 C++/CLI 项目。
我也尝试了较新的 C++/CX 风格,但它有很多限制,没有专门的构造函数,没有重载。它似乎比我需要的要多得多。
有没有我遗漏的解决方案?也许还在 UWP 应用程序下以某种方式使用 C++/CLI(它的好处是已经编写:-))?
从版本 1803 开始,您应该可以访问完整的 C++ 实现
C++/WinRT is an entirely standard modern C++17 language projection
for Windows Runtime
如果您想从 C# 使用 C++ 代码,那么您可能希望将其编译为 Windows 运行时组件,因为它们可以在任何其他 UWP-supported 语言中使用。
我认为 this is demonstrated in this documentation,即使通过使用它的应用程序似乎也是 C++
最后,我成功了。有一个用 C++/CX 编写的中间助手 class(由于固有的限制而不是结构),我使用的实际结构是在 C# 中定义的,使用这个中间。
这个过程中的错误消息主要与底层代码非常旧有关,C,甚至不是 C++,涉及所有链接和外部的东西。不过不管多少年了,还是可以用的...
经过几天的试验只取得了部分成功,我想问问我是否有机会,否则我总是会陷入死胡同。我有一个 UWP C# 应用程序,通常的框架,计划在 Windows 商店中分发。而且我还有一个我之前用过的用C++(主要是C)写的数据包。旧的非托管代码根本不调用任何 Windows API,它只是一个数据格式包。但是我需要直接从 C# 端访问它,并且它最重要的类型被编写为值结构,具有许多重载运算符(这很好,这种方法非常适合应用程序域)。
从 WPF 应用程序,我根本不会有任何问题,一个 value struct
的 C++/CLI 包装器,公开所有内容。但 UWP 应用不想做同样的事情。如果我使用相同的 C++/CLI 包装器,虽然我可以让它自行编译,但 UWP 项目将拒绝引用 C++/CLI 项目。
我也尝试了较新的 C++/CX 风格,但它有很多限制,没有专门的构造函数,没有重载。它似乎比我需要的要多得多。
有没有我遗漏的解决方案?也许还在 UWP 应用程序下以某种方式使用 C++/CLI(它的好处是已经编写:-))?
从版本 1803 开始,您应该可以访问完整的 C++ 实现
C++/WinRT is an entirely standard modern C++17 language projection for Windows Runtime
如果您想从 C# 使用 C++ 代码,那么您可能希望将其编译为 Windows 运行时组件,因为它们可以在任何其他 UWP-supported 语言中使用。 我认为 this is demonstrated in this documentation,即使通过使用它的应用程序似乎也是 C++
最后,我成功了。有一个用 C++/CX 编写的中间助手 class(由于固有的限制而不是结构),我使用的实际结构是在 C# 中定义的,使用这个中间。
这个过程中的错误消息主要与底层代码非常旧有关,C,甚至不是 C++,涉及所有链接和外部的东西。不过不管多少年了,还是可以用的...