我在C#里调用dephi写的一个加密用的dll,可能是类型转换不太对的原因,总是出异常System.AccessViolationException。
dephi 里的声明
function Encode(FromFile,ToFile,Key,RemindStr:String;isShowProgress:Boolean): Integer; stdcall; export;C#
[DllImport("Encrypt.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
private static extern int Encode(
[MarshalAs(UnmanagedType.LPStr)]string FromFile,
[MarshalAs(UnmanagedType.LPStr)]string ToFile,
[MarshalAs(UnmanagedType.AnsiBStr)]string Key,
[MarshalAs(UnmanagedType.AnsiBStr)]string RemindStr,
bool isShowProgress);请熟悉delphi的大虾帮帮忙,谢了先!
dephi 里的声明
function Encode(FromFile,ToFile,Key,RemindStr:String;isShowProgress:Boolean): Integer; stdcall; export;C#
[DllImport("Encrypt.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
private static extern int Encode(
[MarshalAs(UnmanagedType.LPStr)]string FromFile,
[MarshalAs(UnmanagedType.LPStr)]string ToFile,
[MarshalAs(UnmanagedType.AnsiBStr)]string Key,
[MarshalAs(UnmanagedType.AnsiBStr)]string RemindStr,
bool isShowProgress);请熟悉delphi的大虾帮帮忙,谢了先!
String要转换为PChar类型才可以接收.net的StringBuilder类型;其它的都不用变;
dephi代码是客户那边的,能不改delphi代码,通过修c#代码解决吗?