Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Android Linker Problem (https://www.delphipraxis.net/214632-android-linker-problem.html)

TurboMagic 12. Feb 2024 15:53

Android Linker Problem
 
Hallo,

gegeben sei Delphi 12.0 Patch 1 oder 11.3, reagiert beides komisch.
Gegeben sei ein Android Projekt, bestehend aus einer in Delphi geschriebenen .SO
(Shared Object, das Android äquivalent zur Windows DLL) und der Versuch das in einer
Delphi Android App statisch einzubinden (um etwas zu testen).

Im Hauptformular der App welche die SO benutzen soll steht sowas hier zum Import:

Delphi-Quellcode:
{$IFDEF WIN32}
function DoAdd(a, b: Integer): Integer; cdecl; external 'SO_Test.dll';
{$ELSE}
function DoAdd(a, b: Integer): Integer; cdecl; external 'libSO_Test.so';
{$ENDIF}
In dem Ordner, in dem der Android 32 Compiler die Ausgabe ablegt gibt es auch eine
libSO_Test.so, die ist im Deployment Manager auch entsprechend eingebunden und das Ganze
hatte vor Weihnachten auch schon mal funktioniert.

Nur jetzt endet der Versuch das mit F9 auszuführen immer in dieser Fehlermeldung:
[DCC Fehler] E2597 C:\Users\Public\Documents\Embarcadero\Studio\23.0\ CatalogRepository\AndroidNDK\android-ndk-r21\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\aarch64-linux-android\bin\ld.exe: cannot find -lSO_Test

Ich verstehe aber nicht warum der Linker nach SO_Test und nicht libSO_Test schaut.
Aber selbst wenn ich die libSO_Test.so in SO_Test.so umbenenne gibt's eine entsprechende
Fehlermeldung. Ändere ich den Import so: ... external 'liblibSO_Test.so';
würde scheinbar nach einer libSO_Test.so geschaut aber es klappt trotzdem nicht:
..ld.exe: cannot find -llibSO_Test

Hat jemand eine Idee worn das liegen könnte?

Grüße
TurboMagic

Rollo62 13. Feb 2024 09:22

AW: Android Linker Problem
 
Kann es was mit 32/64-Bit zu tun haben?
Auch unter Windows kann man die DLL's nicht so einfach mixen, unter Android wahrscheinlich auch nicht.
Habe ich nie getestet, aber ich gehe davon aus dass die .so zur jeweiligen Bittigkeit passen muss.

TurboMagic 13. Feb 2024 09:47

AW: Android Linker Problem
 
Ja, .SO's kann man auch nicht so einfach mixen.
Aber eigentlich liegt diese als 64 und 32 bit Variante vor und sollte auch im Deployment Manager
so eingetragen sein. Ich werde das aber nochmal prüfen.

TurboMagic 13. Feb 2024 12:36

AW: Android Linker Problem
 
Hallo,

mir ist eben was dazu klar geworden:
Als statischer Import funktioniert es nicht.
Als dynamischer mittels LoadLibrary und GetProcAddress aber schon.

Grüße
TurboMagic


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz