我有兴趣编写一个混合应用程序,混合了托管代码(dotnet/C#)和非托管代码(C++)。一般来说,我对windows运行时的处理还比较陌生,所以我会在microsoft文档中使用它。
目前推荐的方法是什么,特别是对于事物的本地方面?
大多数在线文章都是关于编写C++/CLI兼容层的,但是微软现在似乎建议使用C++/WinRT,这两者之间有一个C++/CX,几乎没有提到过。
(目前的)交易是什么?我是否可以编写本机C++代码,以某种方式在其中使用C++/WinRT库,然后期望能够创建本机类并调用它们的方法?还有必要使用C++/CLI包装器吗?
所有这些名字之间的相似之处使得我们很难找到那些不了解历史上所有事物是如何工作的信息。
发布于 2022-07-22 20:46:48
TL;DR: Windows可以从.NET应用程序中使用,但在其他方面与.NET运行时/框架无关。
Windows运行时是API的设计模式。这些是来自C++、C#和JavaScript+HTML的可消费产品。它使用使用IUnknown样式元数据的IInspectable扩展了传统的COM COM。
C++ /CX语言扩展是为了方便地使用来自C++的"Windows“API而创建的。这重用了许多已经在托管C++中使用的“保留关键字”,因此它们之间出现了大量的混淆。这里的关键方法是:(a)工作中没有.NET运行时,(b)它只由MicrosoftVisualC++编译器( /ZW、/FU、/AI开关)实现,(c)不再推荐使用C++的"Windows“API。
https://devblogs.microsoft.com/cppblog/inside-the-ccx-design/
C++ /是使用和编写"Windows“API的一种可移植标准C++语言。它使用C++17语言特性,并支持VisualC++和clang/LLVM以及其他一致性编译器。
https://blogs.windows.com/windowsdeveloper/2016/11/28/standard-c-windows-runtime-cwinrt/
当您编写"Windows“API时,您可以支持从C++、C#或JavaScript+HTML.
调用您的客户端。
https://stackoverflow.com/questions/73054722
复制相似问题