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

C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫

 更新時間:2022年01月17日 11:33:13   作者:癡者工良  
這篇文章介紹了C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

操作環(huán)境:Visual Studio 2017

如何實現(xiàn) 使用 C# 進(jìn)行嵌入式開發(fā)?

.NET Core 雖然實現(xiàn)了跨平臺,但是不可能處處使用 C# 開發(fā),就好像沒人使用SQL開發(fā)安卓APP,每種語言都有其優(yōu)秀的地方和局限性。

就傳感器、32位、16位嵌入式設(shè)備,可能只有那么幾KB的存儲器,那些串口、針腳、電路、信號,只能使用C語言開發(fā)。就Linux來說,Linux 本身是C語言開發(fā)的,面向C語言有豐富的接口支持和兼容,還有很多地方只能使用C語言。

底層應(yīng)用可以用C語言來完成,如果要開發(fā)一個網(wǎng)站、一個大型應(yīng)用程序呢?

我們可以先用 C 語言寫好底層API接口,生成 .SO 動態(tài)鏈接庫,然后使用 C# 引入 C 語言動態(tài)鏈接庫。利用C語言進(jìn)行底層的接口開發(fā),使用.NET Core/C# 實現(xiàn)跨平臺應(yīng)用開發(fā),通過預(yù)先自定義的API,就可以掌控全局。

一,在Visual Studio 2017 上安裝 C/C++ 支持

這一步是是為了在 VS 2017上一套開發(fā),也可以使用其它工具開發(fā)C語言程序,甚至在 Linux 中使用 vim 編寫、編譯都行。

二,寫一個簡單的C語言程序、生成動態(tài)鏈接庫

創(chuàng)建項目后,點擊屬性,選擇生成 .so

然后新建一個 test.cpp 文件,右鍵 - 新建項,C語言代碼如下

extern “C” {}

表示{}內(nèi)的方法函數(shù)等可以為外部使用

extern "C" 
{
    int Sum(int a,int b) {
        return a + b;
    }
}

右鍵-生成

然后會要求你添加一個 Linux 主機(jī)連接。這里其實加上了沒用,但vs必須要你加上才能生成、編譯,實際對我們后面的操作沒影響。

接下來,看圖操作

點擊菜單欄的生成-僅用于項目-僅鏈接xxx

然后下面下面輸出欄會報錯,不管他,再點擊項目-右鍵生成

之后會生成 .so 文件,復(fù)制.so文件,存放好

三,C# 項目使用此動態(tài)鏈接庫

建立一個.NET Core 項目,把 .so 文件復(fù)制進(jìn)去,記得 “始終復(fù)制”

新建一個類,類名不重要,主要的是方法名稱要一致,參數(shù)一致

頭部引入

using System.Runtime.InteropServices;

類的代碼如下

然后使用此類庫

 public class Test
    {
        [DllImport("./libProject2.so",CallingConvention =CallingConvention.Cdecl)]
        public static extern int Sum(int a,int b);
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Test.Sum(666,666));
            while (true)
            {
                Console.WriteLine("輸入兩個數(shù),用空格隔開,如 666 666");
                string[] vs = Console.ReadLine().Split(" ");
                int a = Convert.ToInt32(vs[0]);
                int b = Convert.ToInt32(vs[1]);
                Console.WriteLine(Test.Sum(a,b));
            }
        }
    }

發(fā)布后打包到 Linux 中運行

筆者現(xiàn)在正在實習(xí),學(xué)習(xí)范圍物聯(lián)網(wǎng)、嵌入式Linux、云計算、.NET Core。

以上只是在 C# 項目中使用 C語言項目的簡單例子,筆者實現(xiàn)了.NET Core 開發(fā)項目管理設(shè)備、對接阿里云IOT,文章正在撰寫中。

以上所述是小編給大家介紹的C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫,希望對大家有所幫助。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Dynamic和Var的區(qū)別及dynamic使用詳解

    Dynamic和Var的區(qū)別及dynamic使用詳解

    C#中的很多關(guān)鍵詞用法比較容易混淆,var和dynamic就是其中一組,他們都可以申明動態(tài)類型的變量,但是本質(zhì)上他們還是有不少區(qū)別的,下面通過本文給大家介紹Dynamic和Var的區(qū)別及如何正確使用dynamic,需要的朋友參考下
    2016-01-01
  • 詳解ASP.NET中Identity的身份驗證代碼

    詳解ASP.NET中Identity的身份驗證代碼

    這篇文章主要介紹了ASP.NET Identity 的“多重”身份驗證代碼,以及實現(xiàn)的原理講解,需要的朋友參考一下。
    2017-12-12
  • C# 無邊框窗體邊框陰影效果的簡單實現(xiàn)

    C# 無邊框窗體邊框陰影效果的簡單實現(xiàn)

    這篇文章介紹了C# 無邊框窗體邊框陰影效果的簡單實現(xiàn),有需要的朋友可以參考一下
    2013-10-10
  • 在.net應(yīng)用程序中運行其它EXE文件的方法

    在.net應(yīng)用程序中運行其它EXE文件的方法

    這篇文章主要介紹了在.net應(yīng)用程序中運行其它EXE文件的方法,涉及C#進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#調(diào)用Windows的API實現(xiàn)窗體動畫

    C#調(diào)用Windows的API實現(xiàn)窗體動畫

    在VF、VB、PB的應(yīng)用中,有些無法通過語言工具本身來完成的或者做得不理想的功能,我們會考慮通過Windows的API來完成。本文就來通過調(diào)用Windows的API實現(xiàn)窗體動畫,感興趣的可以嘗試一下
    2022-11-11
  • C#中常見的數(shù)據(jù)緩存方式匯總

    C#中常見的數(shù)據(jù)緩存方式匯總

    在C#開發(fā)中,數(shù)據(jù)緩存是一種優(yōu)化應(yīng)用程序性能的常見技術(shù),合理的緩存策略可以減少對數(shù)據(jù)源的訪問次數(shù),提高數(shù)據(jù)處理速度,從而改善用戶體驗,下面將詳細(xì)介紹幾種在C#中常見的數(shù)據(jù)緩存方式,以及相應(yīng)的實例,需要的朋友可以參考下
    2024-05-05
  • c#利用Session對象實現(xiàn)購物車的方法示例

    c#利用Session對象實現(xiàn)購物車的方法示例

    這篇文章主要介紹了c#利用Session對象實現(xiàn)購物車的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • selenium.chrome寫擴(kuò)展攔截或轉(zhuǎn)發(fā)請求功能

    selenium.chrome寫擴(kuò)展攔截或轉(zhuǎn)發(fā)請求功能

    Selenium?WebDriver?是一組開源?API,用于自動測試?Web?應(yīng)用程序,利用它可以通過代碼來控制chrome瀏覽器,今天通過本文給大家介紹selenium?chrome寫擴(kuò)展攔截或轉(zhuǎn)發(fā)請求功能,感興趣的朋友一起看看吧
    2022-07-07
  • C#中{get;set;}的具體使用

    C#中{get;set;}的具體使用

    本文主要介紹了C#中{get;set;}的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C#實現(xiàn)簡單學(xué)生成績管理系統(tǒng)

    C#實現(xiàn)簡單學(xué)生成績管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)簡單學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論

丹巴县| 吴桥县| 新巴尔虎右旗| 孝昌县| 夏津县| 专栏| 喀喇| 绥棱县| 通州市| 白城市| 台中市| 财经| 平潭县| 珲春市| 敦煌市| 仙游县| 黄梅县| 建瓯市| 武安市| 贵德县| 马边| 忻州市| 出国| 阜城县| 乌拉特中旗| 南召县| 富裕县| 克东县| 罗定市| 尚志市| 城口县| 龙口市| 长春市| 康马县| 枣庄市| 中西区| 民权县| 杂多县| 弥勒县| 栾城县| 淮安市|