delphi寫的dll檔案函式如下:
function mfi_authen_syscard(sector:byte;key:string;sys_no:dword; sj_key:string):boolean;stdcall;
PB中宣告如下:
Function Boolean mfi_authen_syscard(Long sector,string Key,ULong sys_no,string sj_key) Library "test.dll"
呼叫函式時如下:
lb_return = mfi_authen_syscard(3,"12345678",12345678,"11111111")
例外資訊如下:
"0x0699c1aa" 指令參考的 "0x0000009c" 記憶體。該記憶體不能為 "written"。
新手大家幫幫忙!
uj5u.com熱心網友回復:
第一個是bytePB10.5才有byte
uj5u.com熱心網友回復:
byte 占一個位元組。用char 也是不行的啊uj5u.com熱心網友回復:
改一下 DLL吧。uj5u.com熱心網友回復:
用布爾型試試。uj5u.com熱心網友回復:
delphi 中不能用 string 要用pcharuj5u.com熱心網友回復:
樓上是正解。用PCHAR作為回傳。
如果小于225個位元組的可以用shortstring,但回傳之前要處理下,因為shortstring沒有null結束,第一個位元組存放的是字符長度。
procedure FormatShortString(var s:ShortString);
var
li_len : integer;
begin
li_len := length(s);
move(s[1],s[0],li_len);
s[li_len] := #0;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/94927.html
標籤:API 調用
上一篇:PB如何做出像QQ那樣的界面.
