打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
extern(C# 参考)

extern(C# 参考)

Visual Studio 2013

extern 修饰符用于声明在外部实现的方法。 extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 特性一起使用。 在这种情况下,还必须将方法声明为 static,如下面的示例所示:

[DllImport("avifil32.dll")]private static extern void AVIFileInit();

extern 关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本。 有关详细信息,请参阅 外部别名(C# 参考)

abstractextern 修饰符一起使用来修改同一成员是错误的做法。 使用 extern 修饰符意味着方法是在 C# 代码的外部实现的,而使用 abstract 修饰符意味着类中未提供方法实现。

extern 关键字用于 C# 中时会比用于 C++ 中时受到更多的限制。 若要比较 C# 关键字与 C++ 关键字,请参见 C++ 语言参考中的“使用 extern 指定链接”。

示例 1. 在此示例中,程序接收来自用户的字符串并将该字符串显示在消息框中。 程序使用从 User32.dll 库导入的 MessageBox 方法。

    //using System.Runtime.InteropServices;     class ExternTest    {        [DllImport("User32.dll", CharSet=CharSet.Unicode)]         public static extern int MessageBox(IntPtr h, string m, string c, int type);        static int Main()        {            string myString;            Console.Write("Enter your message: ");            myString = Console.ReadLine();            return MessageBox((IntPtr)0, myString, "My Message Box", 0);        }    }

示例 2. 此示例阐释了调入 C 库(本机 DLL)的 C# 程序。

1. 创建以下 C 文件并将其命名为 cmdll.c

// cmdll.c// Compile with: /LDint __declspec(dllexport) SampleMethod(int i){   return i*10;}

2. 从 Visual Studio 安装目录打开 Visual Studio x64(或 x32)本机工具命令提示符窗口,并通过在命令提示符处键入 cl /LD cmdll.c 来编译 cmdll.c 文件。

3. 在相同的目录中,创建以下 C# 文件并将其命名为 cm.cs

// cm.csusing System;using System.Runtime.InteropServices;public class MainClass {   [DllImport("Cmdll.dll")]   public static extern int SampleMethod(int x);   static void Main()    {      Console.WriteLine("SampleMethod() returns {0}.", SampleMethod(5));   }}

3. 从 Visual Studio 安装目录打开一个 Visual Studio x64(或 x32)本机工具命令提示符窗口,并通过键入以下内容来编译 cm.cs 文件:

csc cm.cs(针对 x64 命令提示符)- 或 - csc /platform:x86 cm.cs(针对 x32 命令提示符)

这将创建可执行文件 cm.exe

4. 运行 cm.exe SampleMethod 方法将值 5 传递到 DLL 文件,这将返回该值与 10 相乘后的结果。程序生成以下输出:

SampleMethod() returns 50.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
extern \调用系统API
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">外部(C#参考) | </font><font style="vertical-align: inherit;">微软
C Sharp与.net学习笔记(二)
佐尔
Unity3d 去掉exe版本的边框
C# 获取键盘钩子,屏蔽键盘按键
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服