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编写的函数,参数为数组类型的话,这样调用是成功的。
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编写的函数,参数为数组类型的话,这样调用是成功的。
解决方案 »
- incmonth函数碰到2009-02-28!
- insert 怎么数据插入到最后一条,而不是当前位置?
- 求 EPSON 打印机的 打印指令集 和 DELPHI 写的 用打印指令 控制 打印机打印的 例子代码 , 急!!!!!!!!!!!!!!!!!!!!!!!
- 怎样打开这样的文件?
- 谁知道怎么编程实现远程windows密码修改?
- 函数指针问题
- 请教一个数据库问题
- 请问关于代码样式(在线给分)
- 我用TQUERY控件ADD SQL语言查询表!假如SQL语言格式错误DELPHI会跳出一个警告窗口,如何屏蔽它,或修改警告窗口里的文字!!
- 关于用纯API创建窗口的问题???
- Dll窗体?
- 我用两个Adoquery连接主从表,为什么从表数据(Dm.ADOQuery_Demand_Today.edit;)无法修改!!!
是否是缓冲区没有释放
--------------------------
不存在这个问题,我在VC中调用成功后,才在delphi中调用,而且调用方法一模一样。
to : luxuewei5214(小卢) ( ) 信誉:100 const buf: array of byte;可能是数据类型不对吧
--------------------------------------------------
类型是一样的,delphi : byte 0..255
vc : unsigned char 0..255
改成下面的试试
function CalcCRC(const buf: array of byte; bufLen:integer):boolean;stdcall;external "xxx.dll";
function CalcCRC(buf:sbuf; bufLen:integer):boolean;external "xxx.dll";
function CalcCRC(const buf: pchar;
bufLen:integer):boolean;stdcall;external "xxx.dll";
用pchar的话,最好做内存分配及释放。