溫馨提示×

溫馨提示×

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

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

如何使用C++生成動態(tài)鏈接庫

發(fā)布時間:2022-10-22 11:45:36 來源:億速云 閱讀:323 作者:iii 欄目:編程語言

這篇文章主要介紹“如何使用C++生成動態(tài)鏈接庫”,在日常操作中,相信很多人在如何使用C++生成動態(tài)鏈接庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用C++生成動態(tài)鏈接庫”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習吧!

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

如何使用C++生成動態(tài)鏈接庫

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

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

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

如何使用C++生成動態(tài)鏈接庫

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

extern “C” {}

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

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

如何使用C++生成動態(tài)鏈接庫

右鍵-生成

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

如何使用C++生成動態(tài)鏈接庫

接下來,看圖操作

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

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

如何使用C++生成動態(tài)鏈接庫

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

如何使用C++生成動態(tài)鏈接庫

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

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

如何使用C++生成動態(tài)鏈接庫

如何使用C++生成動態(tài)鏈接庫

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

頭部引入

using System.Runtime.InteropServices;

類的代碼如下

如何使用C++生成動態(tài)鏈接庫

然后使用此類庫

 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));
            }
        }
    }

如何使用C++生成動態(tài)鏈接庫

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

如何使用C++生成動態(tài)鏈接庫

如何使用C++生成動態(tài)鏈接庫

到此,關(guān)于“如何使用C++生成動態(tài)鏈接庫”的學(xué)習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習,快去試試吧!若想繼續(xù)學(xué)習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

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

c++
AI