从非托管 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 问题