日期:2014-05-19  浏览次数:20862 次

这行delphi的代码怎么改成c#的呢?
//Chang.DLL
      function     t_ADes3(strDes,strSrc,strKey:PChar):Integer;
            stdcall;external   DLLNAME1   name   'tCon_ADes3 ';
============================================================
那位能帮我改一下啊!!!

------解决方案--------------------
using System.Runtime.InteropServices;

public class XX
{
[DllImport( "Change.dll ", EntryPoint= "tCon_ADes3 ", CallingConvention=CallingConvention.StdCall)]
public static extern int t_ADes3(string strDes, string strSrc, string strKey);
}


调用时直接 XX.t_ADes3(xx, yy, zz);


代码 DllImport 用于告诉编译器入口点在哪里。
DllImport声明时可以直接
[DllImport( "change.dll ")]

也可以添加几个属性:
[DllImport( "change.dll ", EntryPoint= "abcd ", CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]

EntryPoint:指定要调用的 Dll入口点,默认入口点名称是托管方法的名称。
CharSet:控制名称重整和封送 String 参数的方式(默认是 UNICODE)
CallingConvention:指示入口点的函数调用约定(默认WINAPI)
SetLastError:指示被调用方法在从属性化方法返回之前是否调用 SetLastError Win32 API函数(C#中默认为 false).


------解决方案--------------------
楼上基本可以
但第一个参数如果是要返回并填写的话
那么就的用StringBuilder类型
调用的时候先开辟空间
StringBuilder vStringBuilder = new StringBuilder(1024);