求 Delphi call C++ builder 的 Demo(for Android) |
尚未結案
|
blue
中階會員 發表:170 回覆:136 積分:81 註冊:2002-04-15 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
blue
中階會員 發表:170 回覆:136 積分:81 註冊:2002-04-15 發送簡訊給我 |
感謝 aftcast 的指點,
如下程式為 Delphi library MyLib; function GetSum(a, b: integer ) : integer; cdecl; begin Result := a b; end; exports GetSum name 'GetSum'; begin end. 編成 Android .so 檔 libMyLib.so, 可使用 另外Delphi程式呼叫(TestMyLib) procedure TForm1.Button1Click(Sender: TObject); var LibFN: string; GetSum: function(a, b: integer ) : integer; cdecl; hLib: HMODULE; begin LibFN := '/storage/emulated/0/Download/lib/armeabi-v7a/' 'libMyLib.so'; hLib := LoadLibrary(PWideChar(LibFN)); //ERROR (Segmentation fault (11)) if hLib<>0 then begin GetSum := GetProcAddress(hLib, 'GetSum'); ShowMessage(IntToStr(GetSum(3, 8))); end else ShowMessage(SysErrorMessage(GetLastError)); end; 但,使用 C builder 建立了 libMyLib1.so, 不確定該如何寫,如下 extern "C" __declspec( dllexport ) int GetSum1(int a, int b) { return a b; }; extern "C" __stdcall int GetSum2(int a, int b) { return a b; } 使用TestMyLib要呼叫, 在這行 GetSum := GetProcAddress(hLib, 'GetSum'); GetSum1 or GetSum2 均無法取得位址, 不知該如何解,謝謝! ===================引 用 aftcast 文 章=================== 問題抽象了一點。還請具體一點。謝謝! |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
blue
中階會員 發表:170 回覆:136 積分:81 註冊:2002-04-15 發送簡訊給我 |
感謝 aftcast 指導,
小弟使用XE8,先開一個Firemonkey專案,再將Mainform remove, Delphi & BCB 都一樣, 謝謝! ===================引 用 aftcast 文 章=================== 你要處理的東西我去年九月搞過,但可能處理的方式不一樣,也成功。好奇你是否何開一個 for android .so 檔的project? 用什麼專案建立的? delphi 是如何產生 so 檔? bcb 又是如何產生so檔的? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |