请问DELPHI7 调用C++的接口,这些参数如何传?
C++的接口定义是:
FRI_SCZ_BEE_ML int decrypt_3Finger(unsigned char ulKeyID[3],
unsigned char *cElement1,
unsigned long ulLen1,
unsigned char *cCipher,
unsigned long ulCipherLen,
unsigned char *cPlain,
unsigned long *ulPlainLen)
D7中这样定义
function decrypt_3Finger(ulKeyID:PChar;cElement1:PChar;ulLen1:Integer;cCipher:array of Byte;ulCipherLen:Cardinal;
var cPlain:array of Char;
var ulPlainLen:LongInt):Integer;stdcall;external 'FRI_BEE_ML.dll';
但传参后总是不行,请问 C++的这些类型,对应D7应该是什么类型呢?
[解决办法]
unsigned char *cCipher, //这个没必要定义为数组,就PChar就可以了
unsigned long ulCipherLen,
[解决办法]
1.你贴的函数没有使用stdcall,你在Delphi下的却用了stdcall。
2.ulKeyID是一个3字节的数组,你在Delphi下却用了4字节的PChar
[解决办法]
function decrypt_3Finger(
ulKeyID: array[1..3] of byte;
cElement1:PChar;
ulLen1:Integer;
cCipher:PChar;
ulCipherLen:LongWord;
cPlain:PChar;
lPlainLen:^LongWord): Integer;stdcall;external 'FRI_BEE_ML.dll';