2013-05-31 17 views
5

Attualmente sto cercando di eseguire il porting della mia applicazione OpenGL su Android e sono bloccato su come importare e compilare GLM http://glm.g-truc.net/ correttamente. Non ho problemi ad usare GLM in applicazioni C++ standard, tuttavia sono abbastanza nuovo nell'NDK. Ho provato tutte le altre soluzioni pubblicate sul Web senza fortuna. Ecco quello che ho finora:Come utilizzare GLM nell'applicazione Android NDK

Sto usando l'ultima versione di GLM (0.9.4)

mio file cpp contiene:

#include <glm\glm.hpp> 

file di mio Android.mk assomiglia:

LOCAL_PATH:= $(call my-dir) 

    include $(CLEAR_VARS) 

    LOCAL_MODULE := libgl2jni 
    LOCAL_CFLAGS := -Werror 
    LOCAL_SRC_FILES := gl_code.cpp 
    LOCAL_LDLIBS := -llog -lGLESv2 

    APP_STL := gnustl_static 
    LOCAL_C_INCLUDES += \Development\OpenGL\glm-0.9.4.0\ 

    include $(BUILD_SHARED_LIBRARY) 

** \ sviluppo \ OpenGL \ glm-0.4.0 ** è la posizione dei file GLM sul mio disco C

Al costruzione, ricevo questo errore:

In file included from jni/gl_code.cpp:28:0, 
     \Development\OpenGL\glm-0.94.0\glm\glm.hpp:86:18: fatal error: limits: No such file or directory 

Questo assomiglia problema di codemonkey https://gamedev.stackexchange.com/questions/47128/android-ndk-build-cant-find-glm-headers dove il 'APP_STL: = gnustl_static' stato suggerito.

Sembra che i miei file di origine siano impostati correttamente, tuttavia esiste una sorta di problema del compilatore che non riesco a identificare. Qualsiasi aiuto è molto apprezzato!

+0

Ho letto altrove che l'installazione di APP_STL: = gnustl_static in Application.mk (non Android.mk) avrebbe funzionato .. e sicuramente lo ha fatto per me. – SparkyNZ

risposta

1

La risposta di Sam Hocevar al problema dei codemonkeys è corretta. non è glm questo è il problema. È il file di intestazione "limits" usato da glm che è il problema.

Se la risposta di Sam non risolve il problema, provare a cambiare la toolchain a una versione precedente aggiungendo quanto segue al file Application.mk:

NDK_TOOLCHAIN_VERSION=4.4.3 

e assicurarsi che lo STL include per il progetto in Eclipse corrisponde alla toolchain. Vai a Progetto-> proprietà-> C/C++ Generale-> Percorsi e simboli

assicurarsi che le seguenti directory sono inclusi:

EDIT: questi sono solo esempi; assicurarsi di utilizzare la piattaforma corretta e abi

/Path/To/NDK/sources/platforms/android-9/arch-arm/usr/include 
/Path/To/NDK/sources/cxx-stl/gnu-libstdc++/4.4.3/include 
/Path/To/NDK/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include 

MODIFICA: commento sulla prima directory rimossa; sembra che glm cerchi il file dei limiti fornito dall'attuale implementazione di stl

+0

Grazie a @Erik per la risposta rapida. Dopo aver aggiunto correttamente il supporto CDT (che mi mancava), ho aggiunto tutti gli include che hai suggerito. Mi sono anche assicurato che la mia piattaforma di destinazione fosse coerente ovunque. Ancora senza fortuna - stesso errore! qualche idea? – krames

+0

Ti suggerisco di assicurarti che i tuoi percorsi stl siano corretti; da quello che posso vedere glm cerca il file dei limiti fornito dall'implementazione di stl attualmente attiva. – Erik

+0

Si scopre che non stavo prestando abbastanza attenzione. Stavo aggiungendo tutto questo ad Android.mk quando invece avrebbe dovuto essere aggiunto ad Application.mk come suggerito sia tu che Sam. Funziona alla grande ora! Grazie. – krames