有關C 的 DLL ,delphi 如何宣告及呼叫 |
答題得分者是:rick060
|
ANDY8C
資深會員 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
C 語言寫的 ABC.DLL 中, 有一函式 xyz() 宣告如下 xyz (unsigned char* binaryData, int dataLength) 在 DELPHI 中引用該DLL函式,宣告是否如下: const ABC = 'ABC.DLL'; procedure xyz( binaryData:array of AnsiString; dataLength:integer );stdcall;far;external ABC;
程式呼叫 str : AnsiString; ....... xyz( Str , length(Str) ); 謝謝您
------
--------------------------------------- 偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩. 編輯記錄
ANDY8C 重新編輯於 2012-12-13 08:59:22, 註解 無‧
|
rick060
高階會員 發表:2 回覆:112 積分:217 註冊:2009-11-17 發送簡訊給我 |
unsigned char 在 C 裡可視為BYTE
而又是 Pointer 是我的話會使用 procedure xyz(address:Pointer;length:Integer);cdecl;external; C : .h extern "C" __declspec(dllexport) void xyz(unsigned char* binaryData, int dataLength); .cpp void xyz(unsigned char* binaryData, int dataLength) { char msg[64]; sprintf(msg,"received address:[%X] Length:[%d]",address,dataLength); OutputDebugString(msg); } delphi: procedure xyz(address:Pointer;length:Integer);cdecl;external 'dllTest.dll'; .pas var b : PByte; begin GetMem(b,500); xyz(b,500); FreeMem(b); end; ===================引 用 ANDY8C 文 章=================== C 語言寫的 ABC.DLL 中, 有一函式 xyz() 宣告如下 const ABC = 'ABC.DLL'; xyz (unsigned char* binaryData, int dataLength) 在 DELPHI 中引用該DLL函式,宣告是否如下: procedure xyz( binaryData:array of AnsiString; dataLength:integer );stdcall;far;external ABC;
程式呼叫 str : AnsiString; ....... xyz( Str , length(Str) ); 謝謝您 |
ANDY8C
資深會員 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
ANDY8C
資深會員 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
大俠您也來了 ,感恩
聽說最近您發了 您的提示,我會試看看 謝謝您 ===================引 用 aftcast 文 章=================== procedure xyz( binaryData:PAnsiChar(Str) , length(Str) );
除了樓上的解法,我覺得這樣應該也可以。雖然……我delphi語法不熟…哈。試一下嘛。
------
--------------------------------------- 偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |