C# Extern如何使用

c#
小樊
81
2024-10-18 18:09:32
欄目: 編程語言

在C#中,extern關(guān)鍵字用于聲明一個(gè)方法是在外部代碼中實(shí)現(xiàn)的。這通常用于調(diào)用非托管代碼(如C++編寫的代碼)或與本地共享庫(如.dll文件)交互。使用extern時(shí),你需要提供一個(gè)函數(shù)聲明,該聲明指定了方法的名稱、返回類型和參數(shù)列表。然后,你可以在C#代碼中使用這個(gè)聲明來調(diào)用該方法,就像它是在C#中實(shí)現(xiàn)的一樣。

以下是一個(gè)簡單的示例,展示了如何在C#中使用extern關(guān)鍵字調(diào)用一個(gè)外部方法:

  1. 首先,假設(shè)你有一個(gè)C++編寫的共享庫,其中包含一個(gè)名為AddNumbers的方法,該方法接受兩個(gè)整數(shù)參數(shù)并返回它們的和。你可以使用C++/CLI來創(chuàng)建一個(gè)包裝器類,以便在C#中調(diào)用這個(gè)方法。
// C++/CLI wrapper class
public ref class MathWrapper {
public:
    static int AddNumbers(int a, int b) {
        return a + b;
    }
};
  1. 接下來,在C#項(xiàng)目中,你可以使用extern關(guān)鍵字聲明一個(gè)與MathWrapper::AddNumbers方法對(duì)應(yīng)的方法。請(qǐng)注意,你需要使用DllImport屬性來指定共享庫的名稱和位置。
using System;
using System.Runtime.InteropServices;

class Program {
    // Declare the extern method using P/Invoke
    [DllImport("MathLibrary.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern int AddNumbers(int a, int b);

    static void Main() {
        int result = AddNumbers(3, 4);
        Console.WriteLine("The sum is: " + result);
    }
}

在這個(gè)例子中,DllImport屬性指定了共享庫的名稱(在這種情況下為MathLibrary.dll)以及調(diào)用約定(在這種情況下為CallingConvention.Cdecl)。請(qǐng)確保將共享庫放在C#項(xiàng)目的輸出目錄中,或者提供正確的路徑。

現(xiàn)在,當(dāng)你運(yùn)行C#程序時(shí),它將調(diào)用C++編寫的AddNumbers方法,并將結(jié)果輸出到控制臺(tái)。

0