欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

我們可以先用 C 語言寫好底層API接口,生成 .SO 動態(tài)鏈接庫,然后使用 C# 引入 C 語言動態(tài)鏈接庫。利用C語言進行底層的接口開發(fā),使用.NET Core/C# 實現(xiàn)跨平臺應用開發(fā),通過預先自定義的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 主機連接。這里其實加上了沒用,但vs必須要你加上才能生成、編譯,實際對我們后面的操作沒影響。

接下來,看圖操作

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

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

之后會生成 .so 文件,復制.so文件,存放好

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

建立一個.NET Core 項目,把 .so 文件復制進去,記得 “始終復制”

新建一個類,類名不重要,主要的是方法名稱要一致,參數(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)在正在實習,學習范圍物聯(lián)網(wǎng)、嵌入式Linux、云計算、.NET Core。

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

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

相關文章

  • C# LINQ查詢表達式及對應LAMBDA表達式的用法

    C# LINQ查詢表達式及對應LAMBDA表達式的用法

    這篇文章主要介紹了C# LINQ查詢表達式及對應LAMBDA表達式的用法,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-04-04
  • C#中的除法運算符與VB.NET中的除法運算符

    C#中的除法運算符與VB.NET中的除法運算符

    這篇文章主要介紹了C#中的除法運算符與VB.NET中的除法運算符,需要的朋友可以參考下
    2014-10-10
  • C#第三方日志插件Log4net的配置文件詳解

    C#第三方日志插件Log4net的配置文件詳解

    Log4net是一個穩(wěn)定且功能豐富的日志庫,已經(jīng)存在多年并且被廣泛使用,這篇文章主要為大家詳細介紹了Log4net日志插件的配置文件信息,感興趣的可以了解下
    2024-03-03
  • Unity Shader片段著色器使用基礎詳解

    Unity Shader片段著色器使用基礎詳解

    頂點-片段著色器是Unity Shader中最基礎的著色器類型,用于控制3D模型的渲染效果。通過頂點著色器計算模型的頂點位置和法線方向,再通過片段著色器計算模型表面的顏色、光照、陰影等效果
    2023-05-05
  • c#文件操作示例帶詳細注釋

    c#文件操作示例帶詳細注釋

    System.IO.Directory類和System.DirectoryInfo類主要提供關于目錄的各種操作,使用時需要引用System.IO命名空間。下面通過程序?qū)嵗齺斫榻B其主要屬性和方法
    2014-01-01
  • C#面向?qū)ο缶幊讨氯螒驅(qū)崿F(xiàn)方法

    C#面向?qū)ο缶幊讨氯螒驅(qū)崿F(xiàn)方法

    這篇文章主要介紹了C#面向?qū)ο缶幊讨氯螒驅(qū)崿F(xiàn)方法,以一個完整的猜拳游戲為例講述了C#面向?qū)ο蟪绦蛟O計的具體實現(xiàn)步驟,具有一定的學習與借鑒價值,需要的朋友可以參考下
    2014-11-11
  • C# List<T>的用法小結(jié)

    C# List<T>的用法小結(jié)

    本篇文章主要是對C#中List<T>的用法進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • c#中禁用windows的任務管理器的方法

    c#中禁用windows的任務管理器的方法

    這篇文章主要介紹了c#中禁用windows的任務管理器的方法,通過注冊表實現(xiàn)禁用,需要的朋友可以參考下
    2014-06-06
  • C# L型棋牌覆蓋實現(xiàn)代碼與效果

    C# L型棋牌覆蓋實現(xiàn)代碼與效果

    C# L型棋牌覆蓋實現(xiàn)代碼與效果,需要的朋友可以參考一下
    2013-04-04
  • C#泛型方法在lua中表示的一種設計詳解

    C#泛型方法在lua中表示的一種設計詳解

    這篇文章主要給大家介紹了關于C#泛型方法在lua中表示的一種設計的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03

最新評論