一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .NET Core3.1編寫混合C++程序

.NET Core3.1編寫混合C++程序

2020-06-24 15:15hez2010 ASP.NET教程

這篇文章主要介紹了.NET Core3.1編寫混合C++程序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

隨著 .NET Core 3.1 的第二個預覽版本發布,微軟正式將 C++/CLI 移植到 .NET Core 上,從此可以使用 C++ 編寫 .NET Core 的程序了。

由于目前僅有 MSVC 支持編譯此類混合代碼,并且由于涉及到非托管代碼,因此 C++/CLI 目前不能跨平臺,只支持 Windows。

如果需要跨平臺,除了微軟的工作之外,還另外需要 gcc/clang 大量跟進,工作量較大且進度不可控,目前微軟暫無使 C++/CLI 跨平臺的計劃。

先決條件

Visual Studio 2019 16.4 preview 3

.NET Core SDK 3.1 preview 2

開啟方法

運行 Visual Studio Installer,安裝“使用 C++ 的桌面開發” 和 “.NET Core 跨平臺開發” 工作負載,然后再在單個組件中勾選“對 v142 生成工具 (14.24) 的 C++/CLI 支持”。

等待安裝完畢,啟動 Visual Studio,新建項目的時候即可看見兩個新增的項目模板:

  • CLR Class Library (.NET Core)
  • CLR Empty Project (.NET Core)

第一個項目

我們選擇 CLR Empty Project (.NET Core) 創建我們的第一個 C++/CLI 項目,然后在右側解決方案管理器的源文件(Source Files) 處右鍵添加 C++ 源文件 main.cpp。

然后我們即可使用 C++ 編寫 .NET Core 程序。

添加以下代碼:

.NET Core3.1編寫混合C++程序

運行程序,輸入 hello world 后回車:

.NET Core3.1編寫混合C++程序

可以看到我們成功的運行了程序并且完成了 C++ 代碼與 .NET Core 的無縫交互。

注意點

  1. 托管堆對象的創建使用 gcnew,而不是 new
  2. 托管堆對象指針的類型為 T^,而不是 T*,以上述代碼為例,str_managed 的類型為 System::String^。得益于 C++ 11 開始有的類型自動推導,我們可以直接使用 auto 代替顯示類型聲明,類似 C# 中的 var。
  3. 使用 :: 代替 . 訪問 namespace 和 class/struct,使用 -> 代替 . 訪問對象中的成員。
  4. 使用 ref class/ref struct 定義 .NET 引用類型,使用 value class/value struct 定義 .NET 值類型。
  5. 使用 interface class/interface struct 定義接口。
  6. 使用 property 定義屬性。
  7. C++/CLI 項目可以引用任何的 C++ 項目或動態鏈接庫,但是要確保架構相同,即你不能用 x86 的配置引用 x64 架構下的非托管代碼。

添加項目引用并使用

對于引用 C++ 代碼,在此不進行贅述,使用方式和正常的 C++ 項目沒有任何區別。因此在這里只說如何引用 .NET 程序集。

我們可以直接添加對 .NET Standard/.NET Core library 的引用。如果出現無法使用 nuget 包管理器安裝的情況,可以手動下載對應的 .NET 程序集 dll 然后添加到項目引用當中。這里以 Newtonsoft.Json 為例。

首先添加引用

.NET Core3.1編寫混合C++程序

然后我們就能使用啦!

然后我們編寫一個 .NET 類型,為了展示的更完整,我們采用完整的屬性書寫方法,而不是自動屬性。

.NET Core3.1編寫混合C++程序

然后我們構建一段 json 字符串,試試用 Newtonsoft.Json 解序列化。

.NET Core3.1編寫混合C++程序

運行,輸出:

.NET Core3.1編寫混合C++程序

后記

雖然 C++/CLI 暫時不能跨平臺,但是對 .NET Core 的支持極大的豐富了 .NET Core 的適用范圍,可以用于編寫高性能的 C++ 程序的同時,享受來自 C++ 和 .NET Core/.NET Standard 的全部生態。

對于編寫 Windows 程序,C++/CLI 絕對值得一試。而關于跨平臺的問題,說不定后面的版本微軟就支持了呢?要知道,兩年前 C++/CLI 在 .NET Core 上運行微軟給的回復也是“沒有計劃”,然而如今卻順利的完整支持了。

對于 C++/CLI 的其他地方,可以參考微軟官方文檔,內容十分豐富(由于中文文檔存在部分機器翻譯,建議有能力的朋友直接閱讀英文文檔避免機器翻譯帶來的錯誤):

https://docs.microsoft.com/zh-cn/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp?view=vs-2019

參考文獻

https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1-preview-2/

https://devblogs.microsoft.com/cppblog/an-update-on-cpp-cli-and-dotnet-core/

https://docs.microsoft.com/zh-cn/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp?view=vs-2019

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/hez2010/p/11810683.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国内精品99 | 美女18隐私羞羞视频网站 | 亚洲国产欧美目韩成人综合 | 大团圆6全文在线阅读 | 99福利视频导航 | 亚裔aⅴ艳星katsuni | 大肚孕妇的高h辣文 | 免费在线观看亚洲 | 好大好硬好长好爽a网站 | 国产日产在线观看 | 亚洲AV国产国产久青草 | 毛片免费全部免费观看 | 亚洲国产在线视频中文字 | 国产欧美日韩在线观看精品 | 国产精品视频一区二区三区w | 四虎影音 | 韩国情事伦理片观看地址 | 免费观看一区二区 | 亚洲国产成人久久综合一区77 | 50度灰破解版v5.7.0 | 韩国三级视频网站 | 男人的天堂在线观看免费 | 国产精品香蕉在线观看不卡 | 99视频免费| 毛片免费观看 | 97色轮| 男人天堂色 | 日韩在线一区二区三区 | 2021国产精品视频 | 亚洲高清视频在线观看 | 九九精品免视频国产成人 | 国产亚洲精aa在线观看不卡 | 久久久久嫩草影院精品 | 日产精品一二三四区国产 | 亚洲第99页 | 免费看美女被靠到爽 | 午夜理伦片免费 | 古代翁熄乩伦小说h | 亚洲区在线播放 | 亚洲嫩模吧粉嫩粉嫩冒白浆 | 五月天国产视频 |