CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

C写的Dll,在delphi里面调用出错,帮忙看一下

楼主lemon_wei(研究BT,做好P2P)2005-01-28 12:45:07 在 Delphi / VCL组件开发及应用 提问

C写的Dll,有个输出函数参数是数组类型,是这样的  
  bool   CalcCRC(const   unsigned   char   buf[],   int   bufLen); 该dll   在VC环境下测试成功。  
  我在delphi中是这样写的  
  function   CalcCRC(const   buf:   array   of   byte;   bufLen:   integer):boolean;   external   "xxx.dll";  
  只声明不调用是没有错误,如果我调用这个函数的话就报内存错误,我是这样调用的:  
  -----------------------------------------------  
  var    
      buf:   array   [0..7]   of   byte;  
      ....  
      CalcCRC(buf,8);  
  ------------------------------------------------  
  不知道是么回事。我试了一下,如果是delphi编写的函数,参数为数组类型的话,这样调用是成功的。  
  问题点数:20、回复次数:7Top

1 楼Kshape_zh(伟大的大伟//[给我个支点、我就可以翘起整个地球仪!])回复于 2005-01-28 13:10:51 得分 3

是否是缓冲区没有释放?Top

2 楼luxuewei5214(小卢)(以下内容仅供参考)回复于 2005-01-28 14:30:07 得分 3

const   buf:   array   of   byte;可能是数据类型不对吧Top

3 楼lemon_wei(研究BT,做好P2P)回复于 2005-01-28 15:21:18 得分 0

to:   Kshape_zh(伟大的大伟//[给我个支点、我就可以翘起整个地球仪!])   (   )   信誉:100    
          是否是缓冲区没有释放  
          --------------------------  
          不存在这个问题,我在VC中调用成功后,才在delphi中调用,而且调用方法一模一样。  
   
   
  to   :   luxuewei5214(小卢)   (   )   信誉:100    
   
  const   buf:   array   of   byte;可能是数据类型不对吧  
  --------------------------------------------------  
  类型是一样的,delphi   :     byte                           0..255  
                              vc           :     unsigned   char         0..255  
  Top

4 楼free007(魔蝎)回复于 2005-01-28 15:52:20 得分 3

function   CalcCRC(const   buf:   array   of   byte;   bufLen:   integer):boolean;   external   "xxx.dll";  
  改成下面的试试  
  function   CalcCRC(const   buf:   array   of   byte;   bufLen:integer):boolean;stdcall;external   "xxx.dll";  
  Top

5 楼djmdjmdjm(狄惊梦)回复于 2005-01-28 15:56:43 得分 4

这样,定义一个类型type   sbuf=array   of   byte(我感觉这里byte改成char为好)  
  function   CalcCRC(buf:sbuf;   bufLen:integer):boolean;external   "xxx.dll";  
  Top

6 楼xinshiji(自由我有)回复于 2005-01-28 16:04:41 得分 4

const   unsigned   char   buf[],在delphi中你用pchar试试          
  function   CalcCRC(const   buf:   pchar;  
  bufLen:integer):boolean;stdcall;external   "xxx.dll";Top

7 楼hhnick(nick)回复于 2005-01-28 16:11:24 得分 3

用array   of   char,   byte在delphi中是一个字节的整形,当然跟char不匹配了,  
  用pchar的话,最好做内存分配及释放。Top

相关问题

  • 求人帮忙看一下DLL的调用问题
  • 程序中调用DLL时出错, 请大家帮忙看一下.
  • 大家看一下如何调用C语言编写的动态链接库的问题,在线等
  • vb调用C写的DLL
  • C#调用DLL的问题
  • C#调用Dll的问题
  • C#调用DLL的问题
  • c++如何调用c写的dll??
  • vb.net 怎样调用delphi dll (这个dll C#可以调用的)
  • C调用C#?

关键词

  • delphi
  • 函数
  • dll
  • 调用
  • buflen
  • buf
  • 类型
  • xxx
  • external
  • pchar

得分解答快速导航

  • 帖主:lemon_wei
  • Kshape_zh
  • luxuewei5214
  • free007
  • djmdjmdjm
  • xinshiji
  • hhnick

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo