在C#中,extern
關鍵字用于聲明一個方法是在外部代碼中實現的。這通常用于調用非托管代碼(如C++編寫的代碼)或與本地共享庫(如.dll文件)交互。使用extern
時,你需要提供一個函數聲明,該聲明指定了方法的名稱、返回類型和參數列表。然后,你可以在C#代碼中使用這個聲明來調用該方法,就像它是在C#中實現的一樣。
以下是一個簡單的示例,展示了如何在C#中使用extern
關鍵字調用一個外部方法:
AddNumbers
的方法,該方法接受兩個整數參數并返回它們的和。你可以使用C++/CLI來創建一個包裝器類,以便在C#中調用這個方法。// C++/CLI wrapper class
public ref class MathWrapper {
public:
static int AddNumbers(int a, int b) {
return a + b;
}
};
extern
關鍵字聲明一個與MathWrapper::AddNumbers
方法對應的方法。請注意,你需要使用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);
}
}
在這個例子中,DllImport
屬性指定了共享庫的名稱(在這種情況下為MathLibrary.dll
)以及調用約定(在這種情況下為CallingConvention.Cdecl
)。請確保將共享庫放在C#項目的輸出目錄中,或者提供正確的路徑。
現在,當你運行C#程序時,它將調用C++編寫的AddNumbers
方法,并將結果輸出到控制臺。