调用Delphi Dll 出现无法封送处理return value错误

fuillusion 2012-03-20 06:13:38
如题,以下是代码部分

[DllImport("ftpdll.dll", EntryPoint = "FtpServerDir",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
protected static extern byte[] FtpServerDir(IntPtr THandle, byte[] FTPServer, byte[] DirName);
/// <summary>
/// 获取指定ftp服务器指定目录下的文件信息
/// </summary>
/// <param name="FtpServer"></param>
/// <param name="DirName"></param>
/// <returns></returns>
public string GetFtpServerDic(byte[] FtpServer,byte[] DirName)
{
byte[] temp = FtpServerDir(IntPtr.Zero, FtpServer, DirName);

return temp.ToString();
}
...全文
124 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gomoku 的回复:]

protected static extern byte[] FtpServerDir(IntPtr ...
托管byte[]有长度信息。而非托管dll返回的指针,c#怎么知道该指针指向内容的长度呢?它能直接封送才奇怪呢。

问题在非托管dll的写法:它返回一个指针的方式,不是好的代码(长度不清楚,所有权不清楚)。
[/Quote]
说的有道理
liuchangfei 2012-03-24
  • 打赏
  • 举报
回复
我碰到了,但是我也不会呢,呵呵
gomoku 2012-03-21
  • 打赏
  • 举报
回复
protected static extern byte[] FtpServerDir(IntPtr ...
托管byte[]有长度信息。而非托管dll返回的指针,c#怎么知道该指针指向内容的长度呢?它能直接封送才奇怪呢。

问题在非托管dll的写法:它返回一个指针的方式,不是好的代码(长度不清楚,所有权不清楚)。
fuillusion 2012-03-20
  • 打赏
  • 举报
回复
没人碰到过吗?

110,567

社区成员

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

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

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