Entwickler-Ecke
Entwicklung für mobile Endgeräte - libnodave für Android
canoniac - Mi 20.08.14 08:56
Titel: libnodave für Android
Hallo zusammen,
ich versuche für eine Projektarbeit von einem Android-Tablet / Smartphone auf eine S7 SPS zuzugreifen. Dazu habe ich die Bibliothek libnodave gefunden und mir stellen sich einige Fragen.
- Hat das schon jemand versucht?
- Kann ich die bereitgestellten Komponenten einfach so in einer mobilenFireMonkey Anwendung verwenden?
Vielen Dank schonmal im Voraus!
Jannik
canoniac - Mi 20.08.14 13:54
Delphi-Quelltext
1: 2:
| uses SysUtils, Classes, NoDave, SyncObjs, FMX.Controls, {$IFDEF FPC} LCLIntf, LResources {$ELSE} WINDOWS {$ENDIF}; |
Ich kann das Projekt unter WIN32 compilieren, allerdings tritt beim transferieren auf Android tritt ein Fehler auf.
uses WINDOWS
funktioniert unter Android nicht.
Hat jemand eine Idee wie das zu lösen ist?
Horst_H - Mi 20.08.14 14:15
Hallo,
nimm doch USES windows raus und klapper dann die Compilermeldungen ab, um die Abhängigkeiten von der unit windows zu finden und passend zu ersetzen.
Gruß Horst
canoniac - Do 21.08.14 15:06
Erstmal danke für die Antwort. Ich dachte ich hätte das Problem umgangen indem ich einfach die NoDaveComponent.pas nicht mehr verwende und stattdessen nur NoDave.pas und libnodave.dll. Das funktioniert auch als WIN32 ganz wunderbar, nur beim compilieren unter Android bekomme ich diesen Fehler:
[DCC Fehler] E2597 C:\Users\Public\Documents\Embarcadero\Studio\14.0\PlatformSDKs\android-ndk-r10\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: error: cannot find -lnodave
C:\Users\Public\Documents\Embarcadero\Studio\14.0\PlatformSDKs\android-ndk-r10\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: C:\Users\Jannik\Documents\Embarcadero\Studio\Projekte\Verbindung\Android\Debug\nodave.o: in function Nodave::openSocket(int, char16_t*):nodave(.text._ZN6Nodave10openSocketEiPDs+0x4): error: undefined reference to 'openSocket'
selbige Meldung gibt es für jede andere Funktion der libnodave.
Was genau verursacht diesen Fehler und wie löse ich ihn?
Vielen Dank
Jannik
Sinspin - Sa 23.08.14 00:06
Alles was eine Dll, also eine Windows spezifische Library, verwendet kann natürlich unter anderen Betriebssystemen nicht verwendet werden. Bzw. Aufrufe, wie der der da angemeckert wird, müssen ersetzt werden durch entsprechende für das Zielsystem gültige.
jaenicke - Sa 23.08.14 06:29
Es existiert dort ein IFDEF LINUX. Mit etwas Glück kannst du einfach LINUX als Direktive in den Projektoptionen anlegen um es zum Laufen zu bringen. Denn prinzipiell funktioniert die Bibliothek ja unter Android, es fehlt nur der Pascal Wrapper speziell für Android.
canoniac - Mo 25.08.14 12:27
Es scheint ja ein Linkerfehler zu sein mit dem Zusatz cannot find -lnodave.
Wo müsste die libnodave.so denn hineinkopiert werden?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!