2013-05-31 63 views
5

我目前正在嘗試將我的OpenGL應用程序移植到Android,並被卡住如何正確導入和構建GLM http://glm.g-truc.net/。我在標準C++應用程序中使用GLM沒有問題,但是我對NDK很新穎。我已經嘗試了所有其他解決方案張貼在網絡上,沒有運氣。以下是我迄今爲止:如何在Android NDK應用程序中使用GLM

我使用的是最新版本的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的文件我的C盤上的位置

建設後,我收到此錯誤:

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

Sam Hocevar對codemonkeys問題的回答是正確的。這不是問題所在。這是glm使用的「limits」頭文件,這是問題所在。

如果薩姆的回答沒有解決您的問題,請嘗試更改工具鏈到一個較早的版本中加入以下到您Application.mk文件:

NDK_TOOLCHAIN_VERSION=4.4.3 

,並確保在STL包括爲您的項目在Eclipse與工具鏈相對應。 轉到項目 - >屬性 - > C/C++通用>路徑和符號

確保下列目錄包括:

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 

編輯:刪除第一個目錄的說明;似乎glm尋找由當前stl實現提供的限制文件

+0

感謝@Erik的快速響應。在正確添加CDT支持(我錯過了)之後,我添加了您建議的所有內容。我也確保我的目標平臺在任何地方都是一致的。仍然沒有運氣 - 同樣的錯誤!有什麼想法嗎? – krames

+0

我建議你確保你的stl路徑是正確的;從我所看到的glm中查找當前活動的stl實現提供的限制文件。 – Erik

+0

原來我沒有給予足夠的關注。我將這一切都添加到了Android.mk中,而應該將它添加到Application.mk中,就像你和Sam建議的那樣。現在很好用!謝謝。 – krames

相關問題