91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用C/C++生成的動態鏈接庫

發布時間:2022-01-17 14:07:47 來源:億速云 閱讀:141 作者:iii 欄目:開發技術

這篇文章主要講解了“怎么使用C/C++生成的動態鏈接庫”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么使用C/C++生成的動態鏈接庫”吧!

操作環境:Visual Studio 2017

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

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

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

我們可以先用 C 語言寫好底層API接口,生成 .SO 動態鏈接庫,然后使用 C# 引入 C 語言動態鏈接庫。利用C語言進行底層的接口開發,使用.NET Core/C# 實現跨平臺應用開發,通過預先自定義的API,就可以掌控全局。

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

怎么使用C/C++生成的動態鏈接庫

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

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

創建項目后,點擊屬性,選擇生成 .so

怎么使用C/C++生成的動態鏈接庫

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

extern “C” {}

表示{}內的方法函數等可以為外部使用

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

怎么使用C/C++生成的動態鏈接庫

右鍵-生成

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

怎么使用C/C++生成的動態鏈接庫

接下來,看圖操作

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

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

怎么使用C/C++生成的動態鏈接庫

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

怎么使用C/C++生成的動態鏈接庫

三,C# 項目使用此動態鏈接庫

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

怎么使用C/C++生成的動態鏈接庫

怎么使用C/C++生成的動態鏈接庫

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

頭部引入

using System.Runtime.InteropServices;

類的代碼如下

怎么使用C/C++生成的動態鏈接庫

然后使用此類庫

 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("輸入兩個數,用空格隔開,如 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));
            }
        }
    }

怎么使用C/C++生成的動態鏈接庫

發布后打包到 Linux 中運行

怎么使用C/C++生成的動態鏈接庫

怎么使用C/C++生成的動態鏈接庫

感謝各位的閱讀,以上就是“怎么使用C/C++生成的動態鏈接庫”的內容了,經過本文的學習后,相信大家對怎么使用C/C++生成的動態鏈接庫這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

禹城市| 新兴县| 花垣县| 无极县| 湖口县| 扶沟县| 新乡市| 秭归县| 宁乡县| 西昌市| 武城县| 杂多县| 天等县| 长兴县| 麦盖提县| 舞钢市| 达孜县| 康平县| 永昌县| 临洮县| 平邑县| 兴文县| 扶风县| 涿州市| 芮城县| 松江区| 莒南县| 青阳县| 浮梁县| 集安市| 正蓝旗| 平乡县| 墨玉县| 永登县| 永胜县| 江口县| 河南省| 多伦县| 沙田区| 浦县| 清河县|