C# Extern案例分析

avatar
作者
筋斗云
阅读量:0

在C#中,extern关键字用于声明一个方法是在其他地方(例如DLL)实现的,而不是在当前的代码文件中。这种方法通常用于调用非托管代码或与其他库交互。下面是一个简单的extern案例分析:

案例背景

假设我们有一个名为NativeLibrary的DLL,其中包含一个名为AddNumbers的方法,该方法接受两个整数参数并返回它们的和。我们的目标是使用C#调用这个AddNumbers方法。

步骤1:创建DLL项目

首先,我们需要创建一个C++ DLL项目来包含AddNumbers方法的实现。这个项目将生成一个名为NativeLibrary.dll的文件。

// NativeLibrary.cpp #include <iostream>  extern "C" {     int AddNumbers(int a, int b) {         return a + b;     } } 

注意:这里使用了extern "C"来防止C++的名称修饰(name mangling),这样C#就可以直接调用这个方法。

步骤2:编译DLL

使用适当的C++编译器编译上面的代码,生成NativeLibrary.dll

步骤3:创建C#项目并调用DLL中的方法

接下来,我们创建一个新的C#控制台应用程序项目,并使用DllImport属性来声明对NativeLibrary.dllAddNumbers方法的引用。

using System; using System.Runtime.InteropServices;  class Program {     [DllImport("NativeLibrary.dll", CallingConvention = CallingConvention.Cdecl)]     private static extern int AddNumbers(int a, int b);      static void Main()     {         int result = AddNumbers(3, 4);         Console.WriteLine("The sum is: " + result);     } } 

在这个例子中,DllImport属性用于指定DLL的名称、要调用的方法名以及调用约定。CallingConvention.Cdecl指定了方法的调用约定,这是根据DLL中的实现来确定的。

步骤4:运行程序

最后,编译并运行C#程序。你应该会看到输出“The sum is: 7”,这表明AddNumbers方法已成功从DLL中被调用。

总结

通过使用extern关键字和DllImport属性,我们可以在C#中调用其他DLL中的方法。这在需要与其他语言编写的代码交互或访问非托管资源时非常有用。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!