最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.NET Core3.1編寫(xiě)混合C++程序

 更新時(shí)間:2019年12月23日 14:29:42   作者:hez2010  
這篇文章主要介紹了.NET Core3.1編寫(xiě)混合C++程序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

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

先決條件

Visual Studio 2019 16.4 preview 3

.NET Core SDK 3.1 preview 2

開(kāi)啟方法

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

等待安裝完畢,啟動(dòng) Visual Studio,新建項(xiàng)目的時(shí)候即可看見(jiàn)兩個(gè)新增的項(xiàng)目模板:

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

第一個(gè)項(xiàng)目

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

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

添加以下代碼:

運(yùn)行程序,輸入 hello world 后回車(chē):

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

注意點(diǎn)

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

添加項(xiàng)目引用并使用

對(duì)于引用 C++ 代碼,在此不進(jìn)行贅述,使用方式和正常的 C++ 項(xiàng)目沒(méi)有任何區(qū)別。因此在這里只說(shuō)如何引用 .NET 程序集。

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

首先添加引用

然后我們就能使用啦!

然后我們編寫(xiě)一個(gè) .NET 類(lèi)型,為了展示的更完整,我們采用完整的屬性書(shū)寫(xiě)方法,而不是自動(dòng)屬性。

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

運(yùn)行,輸出:

后記

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

對(duì)于編寫(xiě) Windows 程序,C++/CLI 絕對(duì)值得一試。而關(guān)于跨平臺(tái)的問(wèn)題,說(shuō)不定后面的版本微軟就支持了呢?要知道,兩年前 C++/CLI 在 .NET Core 上運(yùn)行微軟給的回復(fù)也是“沒(méi)有計(jì)劃”,然而如今卻順利的完整支持了。

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

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

參考文獻(xiàn)

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • asp.net使用jQuery Uploadify上傳附件示例

    asp.net使用jQuery Uploadify上傳附件示例

    Uploadify是JQuery的一個(gè)上傳插件,實(shí)現(xiàn)的效果非常不錯(cuò),帶進(jìn)度顯示,本文是一個(gè)簡(jiǎn)單的介紹Demo,主要是動(dòng)態(tài)傳遞參數(shù)方法,通過(guò)formdata 向處理程序傳遞額外的表單數(shù)據(jù)
    2014-01-01
  • ASP.NET?Core中的策略授權(quán)和ABP授權(quán)

    ASP.NET?Core中的策略授權(quán)和ABP授權(quán)

    這篇文章介紹了ASP.NET?Core中的策略授權(quán)和ABP授權(quán),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼(前后臺(tái))

    asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼(前后臺(tái))

    本文為大家詳細(xì)介紹下asp.net頁(yè)面?zhèn)髦档木唧w實(shí)現(xiàn),感興趣的朋友可以參考下哈,本人水平有限,還請(qǐng)各位朋友多多指教
    2013-06-06
  • 詳解ASP.NET WEB API 之屬性路由

    詳解ASP.NET WEB API 之屬性路由

    本篇文章主要介紹了ASP.NET WEB API 之屬性路由,路由就是Web API如何把URI匹配到一個(gè)Action的描述。有興趣的可以了解一下。
    2017-03-03
  • ASP.NET MVC HtmlHelper如何擴(kuò)展

    ASP.NET MVC HtmlHelper如何擴(kuò)展

    ASP.NET MVC 中HtmlHelper方法為我們提供很多html標(biāo)簽,只需在頁(yè)面調(diào)用就行了,但是微軟并沒(méi)有把所有的html標(biāo)簽都對(duì)應(yīng)有了擴(kuò)展方法,需要我們自定義HtmlHelper,來(lái)滿(mǎn)足我們需要。
    2016-05-05
  • .net MVC中使用forms驗(yàn)證詳解

    .net MVC中使用forms驗(yàn)證詳解

    這篇文章主要為大家詳細(xì)介紹了.net MVC中使用forms驗(yàn)證的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • ASP.NET中制作各種3D圖表的方法

    ASP.NET中制作各種3D圖表的方法

    這篇文章主要給大家介紹如何在ASP.NET中如何制作3D圖表。大家都知道圖表在ASP.NET技術(shù)中是一種特別受歡迎而又很重要的工具。圖表是表示數(shù)據(jù)的圖形,一般含有X和Y兩個(gè)坐標(biāo)軸。我們可以用折線(xiàn),柱狀,塊狀來(lái)表示數(shù)據(jù)。下面通過(guò)本文來(lái)一起學(xué)習(xí)下各種3D圖表的制作過(guò)程吧。
    2016-10-10
  • aspnet?core使用websocket實(shí)時(shí)更新商品信息的方法

    aspnet?core使用websocket實(shí)時(shí)更新商品信息的方法

    這篇文章主要介紹了aspnetcore使用websocket實(shí)時(shí)更新商品信息,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • asp.net 禁用viewstate在web.config里

    asp.net 禁用viewstate在web.config里

    在web.config里設(shè)置禁用viewstate的代碼。
    2009-06-06
  • ASP.Net中英文復(fù)合檢索文本框?qū)崿F(xiàn)思路及代碼

    ASP.Net中英文復(fù)合檢索文本框?qū)崿F(xiàn)思路及代碼

    前段時(shí)間,寫(xiě)一個(gè)用戶(hù)部門(mén)的管理頁(yè)面,需要對(duì)后臺(tái)獲取的用戶(hù)數(shù)據(jù)實(shí)現(xiàn)英漢檢索功能于是就有了下文,編輯的很詳細(xì)圖文并茂呢?感興趣的你可不要錯(cuò)過(guò)了哈,或許本文對(duì)你有所幫助呢
    2013-02-02

最新評(píng)論

青田县| 个旧市| 玉田县| 渑池县| 铜鼓县| 金昌市| 焦作市| 北票市| 呈贡县| 辽宁省| 丹棱县| 和平区| 阿拉善盟| 奎屯市| 曲靖市| 革吉县| 锡林浩特市| 福安市| 平度市| 龙门县| 南溪县| 东丰县| 西乌珠穆沁旗| 渑池县| 莱芜市| 永安市| 乳山市| 曲阳县| 西盟| 呼和浩特市| 博罗县| 舒城县| 农安县| 阿克苏市| 营山县| 磐石市| 琼结县| 贵州省| 绥化市| 双流县| 霍城县|