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

lemon_wei 2005-01-28 12:45:07
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编写的函数,参数为数组类型的话,这样调用是成功的。
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhnick 2005-01-28
  • 打赏
  • 举报
回复
用array of char, byte在delphi中是一个字节的整形,当然跟char不匹配了,
用pchar的话,最好做内存分配及释放。
太空11 2005-01-28
  • 打赏
  • 举报
回复
const unsigned char buf[],在delphi中你用pchar试试
function CalcCRC(const buf: pchar;
bufLen:integer):boolean;stdcall;external "xxx.dll";
djmdjmdjm 2005-01-28
  • 打赏
  • 举报
回复
这样,定义一个类型type sbuf=array of byte(我感觉这里byte改成char为好)
function CalcCRC(buf:sbuf; bufLen:integer):boolean;external "xxx.dll";
free007 2005-01-28
  • 打赏
  • 举报
回复
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";
lemon_wei 2005-01-28
  • 打赏
  • 举报
回复
to: Kshape_zh(伟大的大伟//[给我个支点、我就可以翘起整个地球仪!]) ( ) 信誉:100
是否是缓冲区没有释放
--------------------------
不存在这个问题,我在VC中调用成功后,才在delphi中调用,而且调用方法一模一样。


to : luxuewei5214(小卢) ( ) 信誉:100

const buf: array of byte;可能是数据类型不对吧
--------------------------------------------------
类型是一样的,delphi : byte 0..255
vc : unsigned char 0..255
luxuewei5214 2005-01-28
  • 打赏
  • 举报
回复
const buf: array of byte;可能是数据类型不对吧
Kshape_zh 2005-01-28
  • 打赏
  • 举报
回复
是否是缓冲区没有释放?

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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