当前位置:首页>网络学院>程序开发>c#教程>文章内容

使用C#调用非托管DLL函数

[ 来源:http://www.it55.com | 作者: | 时间:2007-12-24 | 收藏 | 推荐 ] 【


   return i*10;
  }
  
  使用命令行编译 CM.cs:
  csc CM.cs
  这将创建可执行文件 CM.exe。
  
  文件:CM.cs
  
  
  // cm.cs
  using System;
  using System.Runtime.InteropServices;
  public class MyClass
  {
   [DllImport("Cmdll.dll")]
   public static extern int MyMethod(int x);
  
   public static void Main()
   {
   Console.WriteLine("MyMethod() returns {0}.", MyMethod(5));
   }
  }
  运行此程序,MyMethod 将值 5 传递到 DLL 文件,该文件将此值乘以 10 返回。
  运行结果:MyMethod() returns 50.
  
  
  IntPtr 类型的说明
  
  对于平台调用,应让参数为 IntPtr 类型,而不是 String 类型。使用 System.Runtime.InteropServices.Marshal 类所提供的方法,可将类型手动转换为字符串并手动将其释放。
  
  IntPtr 类型被设计成整数,其大小适用于特定平台。
   在 32 位硬件和操作系统中将是 32 位;
   在 64 位硬件和操作系统中将是 64 位。
  
  IntPtr 类型由支持指针的语言使用,并作为在支持与不支持指针的语言间引用数据的一种通用方式。它也可用于保持句柄。例如,IntPtr 的实例广泛地用在 System.IO.FileStream 类中来保持文件句柄。
  
  IntPtr 类型符合 CLS,而 UIntPtr 类型却不符合。只有 IntPtr 类型可用在公共语言运行库中。此类型实现 ISerializable 接口。
  
  其中引用了微软官方的部分例子,特此声名。希望多多指教,共同进步!

(编辑:IT资讯之家 www.it55.com

返回顶部
共3页: 上一页 [1] [2] 3 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]