这是如何导入在非托管C ++ DLL中定义的函数的示例。在C ++源代码“MYDLL.DLL”,该函数add被定义为:
extern "C" __declspec(dllexport) int __stdcall add(int a, int b) { return a + b; }
然后,它可以包含到C#程序如下:
class Program { // 这条线将导入C ++方法。 // 在DllImport属性指定的名称必须是DLL名称。 // 参数的名称并不重要,但类型必须是正确的。 [DllImport("myDLL.dll")] private static extern int add(int left, int right); static void Main(string[] args) { //该方法的extern可以调用,就像任何其他C#方法。 Console.WriteLine(add(1, 2)); } }
见调用约定和关于为什么C ++名字改编的解释extern "C"和__stdcall是必要的。
当第一次调用该方法的extern的C#程序将搜索并加载相应的DLL。有关搜索哪里可以找到DLL,以及如何影响更多的信息,搜索位置看到这个计算器的问题。