Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   LoadLibrary unter iOS (https://www.delphipraxis.net/179857-loadlibrary-unter-ios.html)

Peter666 7. Apr 2014 11:12

LoadLibrary unter iOS
 
Hi,

ich wollte hier eine dynamische Bibliothek in ein Projekt einbinden. Unter Android geht loadlibrary einwandfrei und die DLL wird auch geladen. Unter iOS will das aber nicht.

Die DLL habe ich im StartUp\Library deployed und lade diese via dll := loadlibrary(PChar(IncludeTrailingPathDelimiter(sys tem.IOUtils.TPath.GetLibraryPath)+'mylib.a');

Ich kann mir nicht vorstellen das Apple das laden von Bibliotheken verbietet, oder?

Peter
PS: Die Datei ist im richtigen Pfad und Fileexists findet diese auch.

Union 7. Apr 2014 11:17

AW: LoadLibrary unter iOS
 
Zitat:

Zitat von Peter666 (Beitrag 1254884)
Ich kann mir nicht vorstellen das Apple das laden von Bibliotheken verbietet, oder?

Laden kannst Du die Library, aber verboten ist das tatsächlich von Apple, genau wie private Frameworks. So was kriegst Du nicht durch's Review.

mkinzler 7. Apr 2014 11:17

AW: LoadLibrary unter iOS
 
Apple verbietet dynamisches Nachladen in iOS. Du musst Bibliotheken statisch in die Anwendung binden.

Sir Rufo 7. Apr 2014 11:20

AW: LoadLibrary unter iOS
 
Es wäre besser wenn du durchgängig Delphi-Referenz durchsuchenTPath benutzen würdest.

Delphi-Quellcode:
TPath.Combine( TPath.GetLibraryPath, 'mylib.a' );

Peter666 7. Apr 2014 11:23

AW: LoadLibrary unter iOS
 
Hmm, in meinem Fall ist dass die LibAV. Soll das bedeuten ich kann die Bibliothek von FlashAVConverter gar nicht benutzen?

mkinzler 7. Apr 2014 11:25

AW: LoadLibrary unter iOS
 
Doch, aber du musst statisch linken. (Geht wohl nicht mit der Trial-Version)

Union 7. Apr 2014 11:25

AW: LoadLibrary unter iOS
 
Dummerweise will iOS einen ANSIstring. Und was sind Ansistrings unter den Mobilen Compilern? BÖÖÖÖSE. Also muss man es so machen:
Delphi-Quellcode:
dll : Thandle
begin
  dll := dlopen(MarshaledAString('/woauchimmer/wasauchimmer.dylib'), RTLD_LAZY);
end;
Die kannst Du benutzen. Aber wenn Du es im AppStore haben willst, musst du die .a - Variante linken.

Peter666 7. Apr 2014 11:43

AW: LoadLibrary unter iOS
 
Die Frage klingt blöde, aber wie linke ich die Bibliothek? Ich kann ja kaum ein {$L Deploy\libav.a} machen, oder?

mkinzler 7. Apr 2014 11:45

AW: LoadLibrary unter iOS
 
Nein. Diese muss in die Exe. (In das Projekt aufnehmen)

Daniel 7. Apr 2014 11:50

AW: LoadLibrary unter iOS
 
Du musst mindestens eine Funktion aus der Bibliothek hart referenzieren, ähnlich wie man es unter Windows kennt mit Funktionen, die als "external" deklariert sind.
Wie man das macht, habe ich mal in meinem Blog beschrieben: https://www.danielwolf.eu/blog/2013/...en-a-libraries. Wenn Du ein zweites Beispiel suchst, fiele mir auf die Schnelle das Barcode-Beispiel von Bruno Fierens (TMS) ein, dort hat er auch eine Bibliothek statisch integriert: http://www.tmssoftware.com/site/blog.asp?post=280. In den Sourcen seiner (freien) Komponente findest Du ein weiteres Beispiel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr.
Seite 1 von 2  1 2      

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