c#中extern修饰符的意义
时间: 2023-12-05 07:40:30 浏览: 153
在C#中,extern修饰符用于声明一个方法是在外部实现的,也就是说,该方法的实现不在当前的C#程序中,而是在其他的非托管代码中,例如C++ DLL。使用extern修饰符可以让C#程序调用其他语言编写的代码,从而实现跨语言调用。需要注意的是,extern修饰符只能用于方法的声明,而不能用于方法的定义。
下面是一个使用extern修饰符调用C++ DLL中的函数的例子:
```csharp
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("MyDll.dll")]
public static extern int MyFunction(int a, int b);
static void Main(string[] args)
{
int result = MyFunction(1, 2);
Console.WriteLine(result);
}
}
```
这个例子中,我们使用DllImport属性指定了要调用的DLL文件名和函数名,并使用extern修饰符声明了MyFunction方法。在Main方法中,我们直接调用了MyFunction方法,并输出了它的返回值。
相关问题
static extern CLibrary GetInstance(); 显示修饰符无效
这个错误提示通常意味着在使用 "static extern" 修饰符的时候出现了问题。在 C# 中,"static" 表示静态方法,"extern" 表示该方法是由其他外部程序集实现的,而不是在当前程序集中实现的。因此,"static extern" 修饰符只能用于声明和调用外部方法。
通常,这种错误的原因可能是以下几种情况之一:
1. 没有正确导入外部DLL文件。
2. 没有正确声明外部方法的签名。
3. 在类外部使用 "static" 修饰符。
你需要检查一下以上三个问题,确认是否存在问题,并且根据具体情况进行相应的解决方案。
阅读全文