请问各位dfw,我有一个c++做的dll中有两个函数,如何把他变成delphi函数 (50分)

  • 主题发起人 clever_boy_2000
  • 开始时间
C

clever_boy_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
如题:
extern "C" __stdcall int GC_DES(short Mode,int BlockMode,unsigned char *Key,int SourLen,unsigned char *Sour,int *DestLen,unsigned char *Dest);


extern "C" __stdcall int GC_MAC(unsigned char *Key,unsigned char *Random,int SourLen,unsigned char *Sour,unsigned char *MAC);

主要是char *和int *的转换问题
分不够可以再加
在线等待,救命
 

那锦渤

Unregistered / Unconfirmed
GUEST, unregistred user!
char * = PChar;
int * = PInteger;
按照我的使用经验,如果char * 作为行参用PChar就可以了,如果是值参就要使用
Array[0..x] of char 或为PChar分配空间用GetMem
至于int * 直接使用integer好了
 
C

clever_boy_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
to 那锦渤
太谢谢了,但请问如何使PInteger变成Integer呢?
 

那锦渤

Unregistered / Unconfirmed
GUEST, unregistred user!
能说的明确些,是编译过不去,还是执行错误?
GetMem(var P: Pointer; Size: Integer)
记得要用FreeMem释放空间。
 

那锦渤

Unregistered / Unconfirmed
GUEST, unregistred user!
函数声明时不用PInteger而用integer;不妨试试
 

行素

Unregistered / Unconfirmed
GUEST, unregistred user!
extern "C" __stdcall int GC_MAC(unsigned char *Key,unsigned char *Random,int SourLen,unsigned char *Sour,unsigned char *MAC);
unsigned char *
对应DELPHI中的BYTE的指针 pchar(@var) var为 byte 类型变量,可以是单个byte变量,也可以是
byte数组的首地址。
int 直接就是integer类型
 
C

clever_boy_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
to 那锦渤
首先谢谢你,
是这样的
GC_DES是一个加密函数,用C++写的
int SourLen,unsigned char *Sour是原值(形参),
int *DestLen,unsigned char *Dest是(值参返回加密值),
在开始时没用GetMem对Dest处理所以返回不对,并DestLen我试过Integer,
^Integer(编译不能通过),都不对
现在使用GetMem对Dest处理,可以看见值参返回值,但DestLen使用PInteger
后一直无法得到int *DestLen所期望的值
并(delphi中)DestLen要否初始化?
请问如何把PInteger变成正确的int *DestLen.
万分感谢



 
C

clever_boy_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部