從非託管 C DLL 匯入函式

以下是如何匯入在非託管 C++ DLL 中定義的函式的示例。在“myDLL.dll”的 C++原始碼中,定義了函式 add

extern "C" __declspec(dllexport) int __stdcall add(int a, int b)
{
    return a + b;
}

然後它可以包含在 C#程式中,如下所示:

class Program
{
    // This line will import the C++ method.
    // The name specified in the DllImport attribute must be the DLL name.
    // The names of parameters are unimportant, but the types must be correct.
    [DllImport("myDLL.dll")]
    private static extern int add(int left, int right);

    static void Main(string[] args)
    {
        //The extern method can be called just as any other C# method.
        Console.WriteLine(add(1, 2));
    }
}

有關為何需要 extern "C"__stdcall 的說明,請參閱呼叫約定C++名稱修改

尋找動態庫

首次呼叫 extern 方法時,C#程式將搜尋並載入相應的 DLL。有關搜尋查詢 DLL 的位置以及如何影響搜尋位置的詳細資訊,請參閱此 stackoverflow 問題