急delphi调用c++的dll失败,但是pb和vb.net都可以,大家帮小弟我看看
急!!delphi调用c++的dll失败,但是pb和vb.net都可以,大家帮我看看
别人c++写的dll
int PASCAL KeyOut(BYTE* UserInfo1,DWORD dwLen,BYTE* OutKey)
通过UserInfo1和dwlen计算OutKey并返回
-------------------------------------------
pb9.0
PUBLIC FUNCTION ulong KeyOut( string UserInfo, ulong dwLen, ref string OutKey ) LIBRARY "KeyDll.dll" ALIAS FOR "KeyOut"
string ls_key , ls_val = ' '
integer dwn = 22
ls_key = trim(sle_5.text)
dwn = len(trim(ls_tax))
KeyGenOut(ls_tax,dwn,ls_val)
成功,ls_val可以取得返回值
-------------------------------------------
vb.net
Declare Function KeyOut Lib "KeyDll" Alias "KeyOut" (ByVal UserInfo As String, ByVal dwLen As Integer, ByVal OutKey As String) As Long
Dim outkey As String
Dim userinfo As String
userinfo = "12121212121212"
outkey = " "
KeyGenOut(userinfo, 22, outkey)
成功,outkey可以取得返回值
-------------------------------------------
delphi里
function KeyOut(key:pchar;dwlen:integer;var outkey:pchar): integer;stdcall; external 'KeyGenDll.dll';
我不知道这么写对不对,反正改来改去都不行,
请大家帮帮我啊
------解决方案--------------------
outkey先申请内存,再使用,像这样:
别人c++写的dll
int PASCAL KeyOut(BYTE* UserInfo1,DWORD dwLen,BYTE* OutKey)
通过UserInfo1和dwlen计算OutKey并返回
-------------------------------------------
pb9.0
PUBLIC FUNCTION ulong KeyOut( string UserInfo, ulong dwLen, ref string OutKey ) LIBRARY "KeyDll.dll" ALIAS FOR "KeyOut"
string ls_key , ls_val = ' '
integer dwn = 22
ls_key = trim(sle_5.text)
dwn = len(trim(ls_tax))
KeyGenOut(ls_tax,dwn,ls_val)
成功,ls_val可以取得返回值
-------------------------------------------
vb.net
Declare Function KeyOut Lib "KeyDll" Alias "KeyOut" (ByVal UserInfo As String, ByVal dwLen As Integer, ByVal OutKey As String) As Long
Dim outkey As String
Dim userinfo As String
userinfo = "12121212121212"
outkey = " "
KeyGenOut(userinfo, 22, outkey)
成功,outkey可以取得返回值
-------------------------------------------
delphi里
function KeyOut(key:pchar;dwlen:integer;var outkey:pchar): integer;stdcall; external 'KeyGenDll.dll';
我不知道这么写对不对,反正改来改去都不行,
请大家帮帮我啊
------解决方案--------------------
outkey先申请内存,再使用,像这样:
- Delphi(Pascal) code
var d:integer; userinfo,outkey:pchar; begin userinfo:='Hello'; outkey:=stralloc(1024); try d:=KeyGenOut(userinfo, 22, outkey); showmessage(outkey); finally strdispose(outkey); end;