阅读量:0
在C#中,extern
关键字用于声明一个方法是在外部代码中实现的。这通常用于调用非托管代码(如C++编写的代码)或与本地共享库(如.dll文件)交互。使用extern
时,你需要提供一个函数声明,该声明指定了方法的名称、返回类型和参数列表。然后,你可以在C#代码中使用这个声明来调用该方法,就像它是在C#中实现的一样。
以下是一个简单的示例,展示了如何在C#中使用extern
关键字调用一个外部方法:
- 首先,假设你有一个C++编写的共享库,其中包含一个名为
AddNumbers
的方法,该方法接受两个整数参数并返回它们的和。你可以使用C++/CLI来创建一个包装器类,以便在C#中调用这个方法。
// C++/CLI wrapper class public ref class MathWrapper { public: static int AddNumbers(int a, int b) { return a + b; } };
- 接下来,在C#项目中,你可以使用
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
方法,并将结果输出到控制台。