C#调用dephi写的dll问题

ls25145 2009-05-15 11:32:46
我在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的大虾帮帮忙,谢了先!
...全文
50 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianhuo_soft 2009-05-15
  • 打赏
  • 举报
回复
dumpbin /exports a.dll

http://topic.csdn.net/u/20090324/12/90f88eba-5194-4b70-ad72-c4f57282a63b.html
ztenv 2009-05-15
  • 打赏
  • 举报
回复
不改那边也可以,那么你用再Delphi封一层或用C++封一层,然后改为C#能调用的接口就行了,
ls25145 2009-05-15
  • 打赏
  • 举报
回复
谢谢gxj760998、lianshaohua!
dephi代码是客户那边的,能不改delphi代码,通过修c#代码解决吗?
ztenv 2009-05-15
  • 打赏
  • 举报
回复
function Encode(FromFile,ToFile,Key,RemindStr:String;isShowProgress:Boolean): Integer; stdcall; export;
String要转换为PChar类型才可以接收.net的StringBuilder类型;其它的都不用变;
gxj760998 2009-05-15
  • 打赏
  • 举报
回复
String必须转化为PCHAR来进行。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧