当前位置:编程学习 > Delphi >>

C#调用Delphi的dll之详解-完整版(最后面附有可下载Demo源码)

C#调用Delphi接口方法,有两种解决办法:

    

  一、将Delphi程序编译成一个COM组件,然后在C#里引用COM组件。

  二、非托管调用Dephi的DLL文件。

 

      这里我们主要讲解一下第二种方法,讲第二种方法之前首先讲解下DllImport。

     DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。

     DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。
     DllImport的定义如下:
 

 

\代码
 1      [AttributeUsage(AttributeTargets.Method)]
 2      public class DllImportAttribute: System.Attribute
 3      {
 4       public DllImportAttribute(string dllName) {…} //定位参数为dllName
 5       public CallingConvention CallingConvention; //入口点调用约定
 6       public CharSet CharSet;                                   //入口点采用的字符接
 7       public string EntryPoint;                                  //入口点名称
 8       public bool ExactSpelling;                               //是否必须与指示的入口点拼写完全一致,默认false
 9       public bool PreserveSig;                                  //方法的签名是被保留还是被转换
10       public bool SetLastError;                                  //FindLastError方法的返回值保存在这里
11       public string Value { get {…} }
12      } 
13 

 

  上面DLL的名字有时需要写上路径的如[DllImport(@"C:OJBinJudge.dll")]这样指定DLL的绝对路径就可以正常装载。

      假如没有路径的话,DllImport会按照顺序自动去寻找的地方:
     1、exe所在目录
     2、System32目录
     3、环境变量目录
     所以只需要你把引用的DLL 拷贝到这三个目录下, 就可以不用写路径了。

     说明: &

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,