tr1/function in Native Code

  • 4 Antworten
  • Letztes Antwortdatum
A

AndOne74

Neues Mitglied
0
Hallo,

ich habe hier ein kleines Problem (oder auch größer). Ich möchte gerne meine C++ Sourcecode in eine Android App verwenden. Soweit alles gut, das mit den NDK klappt recht gut.

Ich benutze folgende Funktion die sich aber vom Compiler nicht übersetzen lässt.
Ihm fehlt "tr1/functional"

Code:
#include <tr1/functional>
using namespace std::tr1;
using namespace std::tr1::placeholders;

class CPU
{
public:

function<unsigned char(unsigned short)> *ReadProcTbl;
...
Wie kann ich den Compiler überreden das er das schluckt. Hat jemand damit schon gearbeitet.
Oder wie kann ich das umschreiben, ich muss von außen einen Zeiger einer Funktion in die Klasse ablegen (function<unsigned char(unsigned short)> *ReadProcTbl; ). Die Klasse kann dann intern auf diese Funktion zugreifen.

Ich benutze Eclipse mit ADT.

MfG Thorsten
 
Du musst entweder tr1/functional in den Include-Path von Eclipse aufnehmen, oder local in Dein Projekt einbauen und mit

Code:
#include "tr1/functiona"

(in ".." statt in <...> wenn es local ist) einbinden.

MfG Uwe
 
Danke für die schnelle Antwort. tr1/funktional muss doch der Compiler zu Verfügung stellen oder ? Ich finde sie ja nicht, ich wollt sich ja schon in Eclipse in den Include Pfaden hinzufügen. Und lokal ist ja das selbe, ich brauche ja erst mal die Header Dateien, die meines erachtens aber der Compiler haben müsste.

Mhhhh .... ?

MfG Thorsten
 
Der Compiler bringt zwar die Standard-Header mit, aber tr1/... ist M.E. kein Standard Paket. Zumindest keines, das im Android-NDK dabei ist.

Wenn Du das in Deinem bisherigen Projekt verwendet hast, mußt Du mal gucken, woher es kam.

Die im Android-NDK beinhalteten Pakete findest Du unter <NDK-Home>/platforms/android-14/arch-arm/usr/include (Wenn Du als Plattform android-14 und als Architektur arm verwendest)

MfG Uwe
 
Der Tip war gut. Habe das NDK noch mal durchforstet und bin über eine TXT Datei gestolpert.

This directory contains the headers and prebuilt binaries for the
GNU libstdc++-v3 C++ Standard Template Library implementation.

These are generated from the toolchain sources by the rebuild-all-prebuilt.sh
script under build/tools.

To use it, define APP_STL to 'gnustl_static' in your Application.mk.
See docs/CPLUSPLUS-SUPPORT.html for more details.

This implementation fully supports C++ exceptions and RTTI.
Also "Application.mk" im jni Verzeichnis ertsellt. Dort folgendes eingetragen ...
APP_STL := gnustl_static

Und voila, nu findet er die tr1/functional :scared:

Danke für den Denkanstoß !!

MfG Thorsten
 
Zurück
Oben Unten