.NETCore3.1如何編寫混合C++程序-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān).NET Core3.1如何編寫混合C++程序的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)是少有的成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、營銷型企業(yè)網(wǎng)站、小程序定制開發(fā)、手機APP,開發(fā)、制作、設(shè)計、友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,成立與2013年,堅持透明化,價格低,無套路經(jīng)營理念。讓網(wǎng)頁驚喜每一位訪客多年來深受用戶好評

前言

隨著 .NET Core 3.1 的第二個預(yù)覽版本發(fā)布,微軟正式將 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++ 的桌面開發(fā)” 和 “.NET Core 跨平臺開發(fā)” 工作負載,然后再在單個組件中勾選“對 v142 生成工具 (14.24) 的 C++/CLI 支持”。

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

  • CLR Class Library (.NET Core)

  • CLR Empty Project (.NET Core)

第一個項目

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

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

添加以下代碼:

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

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

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

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

注意點

  1. 托管堆對象的創(chuàng)建使用 gcnew,而不是 new

  2. 托管堆對象指針的類型為 T^,而不是 T*,以上述代碼為例,str_managed 的類型為 System::String^。得益于 C++ 11 開始有的類型自動推導(dǎo),我們可以直接使用 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++ 項目或動態(tài)鏈接庫,但是要確保架構(gòu)相同,即你不能用 x86 的配置引用 x64 架構(gòu)下的非托管代碼。

添加項目引用并使用

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

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

首先添加引用

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

然后我們就能使用啦!

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

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

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

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

運行,輸出:

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

感謝各位的閱讀!關(guān)于“.NET Core3.1如何編寫混合C++程序”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

網(wǎng)頁名稱:.NETCore3.1如何編寫混合C++程序-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://muchs.cn/article12/idggc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司服務(wù)器托管、全網(wǎng)營銷推廣、標(biāo)簽優(yōu)化、虛擬主機定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計