D
dulei_115
Unregistered / Unconfirmed
GUEST, unregistred user!
如何调用下面的c做的一个DLL函数
DLL的c语法说明如下:
int Encrypt(IN long EncAlgID,IN const BYTE * PubKeyOrCert,IN DWORD PubKeyOrCertLen,IN const BYTE * PlanText,IN DWORD PlanTextLen,OUT BYTE * CipherText,IN OUT DWORD * CipherTextLen)
我试了几天了,参数类型改过好几次,效果最好的是这样
project 中 uses ShareMem
TEncrypt = function (EncAlgID: Longint; PubKeyOrCert: PChar;
PubKeyOrCertLen: PLongWord; PlanText: PChar; PlanTextLen: PLongWord;
CipherText: PChar; var CipherTextLen: PLongWord): Integer; stdcall;
传参数时PChar的全部用array[0..255] of char
---------------------------------------------------
可是调用时,有时还是会出现读地址错,有时甚至还会将一些根本不相干的变量(例如某些循环变量、整形变量)值给改了,弄的我头都晕了。我有时怀疑是dll的问题,可是这个dll,人家用c调用没有问题。
DLL的c语法说明如下:
int Encrypt(IN long EncAlgID,IN const BYTE * PubKeyOrCert,IN DWORD PubKeyOrCertLen,IN const BYTE * PlanText,IN DWORD PlanTextLen,OUT BYTE * CipherText,IN OUT DWORD * CipherTextLen)
我试了几天了,参数类型改过好几次,效果最好的是这样
project 中 uses ShareMem
TEncrypt = function (EncAlgID: Longint; PubKeyOrCert: PChar;
PubKeyOrCertLen: PLongWord; PlanText: PChar; PlanTextLen: PLongWord;
CipherText: PChar; var CipherTextLen: PLongWord): Integer; stdcall;
传参数时PChar的全部用array[0..255] of char
---------------------------------------------------
可是调用时,有时还是会出现读地址错,有时甚至还会将一些根本不相干的变量(例如某些循环变量、整形变量)值给改了,弄的我头都晕了。我有时怀疑是dll的问题,可是这个dll,人家用c调用没有问题。