温馨提示×

C# Extern如何使用

c#
小樊
89
2024-10-18 18:09:32
栏目: 编程语言

在C#中,extern关键字用于声明一个方法是在外部代码中实现的。这通常用于调用非托管代码(如C++编写的代码)或与本地共享库(如.dll文件)交互。使用extern时,你需要提供一个函数声明,该声明指定了方法的名称、返回类型和参数列表。然后,你可以在C#代码中使用这个声明来调用该方法,就像它是在C#中实现的一样。

以下是一个简单的示例,展示了如何在C#中使用extern关键字调用一个外部方法:

  1. 首先,假设你有一个C++编写的共享库,其中包含一个名为AddNumbers的方法,该方法接受两个整数参数并返回它们的和。你可以使用C++/CLI来创建一个包装器类,以便在C#中调用这个方法。
// C++/CLI wrapper class
public ref class MathWrapper {
public:
    static int AddNumbers(int a, int b) {
        return a + b;
    }
};
  1. 接下来,在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方法,并将结果输出到控制台。

0