2013-05-31 1 views
5

В настоящее время я пытаюсь перенести приложение OpenGL на Android и зациклился на том, как правильно импортировать и строить GLM http://glm.g-truc.net/. У меня нет проблем с использованием GLM в стандартных приложениях на C++, но я довольно новичок в NDK. Я пробовал все другие решения, размещенные по сети, без везения. Вот то, что я до сих пор:Как использовать GLM в приложении Android NDK

Я использую последнюю версию GLM (0.9.4)

Мой файл .cpp содержит:

#include <glm\glm.hpp> 

Мой Android.mk файл выглядит следующим образом:

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) 

** \ Разработка \ OpenGL \ GLM-0.4.0 ** является расположение файлов GLM на моем диске с

После строительства, я получаю эту ошибку:

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 

Это напоминает проблему codemonkey в https://gamedev.stackexchange.com/questions/47128/android-ndk-build-cant-find-glm-headers где 'APP_STL: = gnustl_static' был предложен.

Похоже, что исходные файлы правильно настроены, однако есть какая-то проблема с компилятором, которую я не могу определить. Любая помощь очень ценится!

+0

Я читал в другом месте, что использование APP_STL: = gnustl_static в Application.mk (не Android.mk) будет работать .. и, конечно же, это для меня. – SparkyNZ

ответ

1

Ответ Сэма Хосевара на проблему codemonkeys правильный. это не проблема. Это заголовочный файл «limits», используемый glm, это проблема.

Если ответ Сэм не решает проблему, попробуйте изменить набор инструментов на более раннюю версию, добавив следующие строки в ваш файл Application.mk:

NDK_TOOLCHAIN_VERSION=4.4.3 

И убедитесь, что STL включает в себя для вашего проекта в Eclipse соответствует инструментальной цепочке. Перейти к Проект-> свойства-> C/C++ Общие-> Paths и символы

убедитесь, что следующие каталоги включены:

EDIT: это только примеры; убедитесь, что вы используете правильную платформу и 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 

EDIT: примечание о первом каталоге удалено; похоже, glm ищет файл ограничений, предоставленный текущей реализацией stl.

+0

Спасибо @Erik за быстрый ответ. После правильного добавления поддержки CDT (которой я отсутствовал), я добавил все входящие предложения, которые вы предложили. Я также удостоверился, что моя целевая платформа была везде согласована. Еще не повезло - такая же ошибка! Есть предположения? – krames

+0

Я предлагаю вам убедиться, что ваши stl-пути верны; из того, что я вижу, glm ищет файл ограничений, предоставляемый текущей активной реализацией stl. – Erik

+0

Оказывается, я не уделял достаточного внимания. Я добавлял все это в Android.mk, но вместо этого он должен был быть добавлен в Application.mk, как и вы, и Сэм. Прекрасно работает! Спасибо. – krames