2013-05-31 20 views
5

Tôi hiện đang cố gắng chuyển ứng dụng OpenGL của mình sang Android và bị kẹt về cách nhập và tạo GLM http://glm.g-truc.net/ đúng cách. Tôi không gặp khó khăn khi sử dụng GLM trong các ứng dụng C++ chuẩn, tuy nhiên tôi khá mới với NDK. Tôi đã thử tất cả các giải pháp khác được đăng trên web mà không có may mắn. Dưới đây là những gì tôi có cho đến nay:Cách sử dụng GLM trong ứng dụng NDK của Android

Tôi đang sử dụng phiên bản mới nhất của GLM (0.9.4)

tập tin cpp của tôi chứa:

#include <glm\glm.hpp> 

tập tin của tôi Android.mk trông giống như:

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) 

** \ Development \ OpenGL \ GLM-0.4.0 ** là vị trí của các tập tin GLM trên ổ C của tôi

Khi xây dựng, tôi nhận được lỗi này:

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 

này giống codemonkey của vấn đề https://gamedev.stackexchange.com/questions/47128/android-ndk-build-cant-find-glm-headers nơi 'APP_STL: = gnustl_static' đã được đề xuất.

Dường như các tệp nguồn của tôi được thiết lập chính xác, tuy nhiên có một số vấn đề về trình biên dịch mà tôi không thể xác định. Bất kỳ trợ giúp nào cũng được đánh giá rất cao!

+0

Tôi đọc ở nơi khác mà đưa APP_STL: = gnustl_static vào Application.mk (không phải Android.mk) sẽ hoạt động .. và chắc chắn nó đã làm cho tôi. – SparkyNZ

Trả lời

1

Câu trả lời của Sam Hocevar đối với các vấn đề về codemonkeys là chính xác. nó không phải là glm đó là vấn đề. Đó là tập tin tiêu đề "giới hạn" được sử dụng bởi glm đó là vấn đề.

Nếu câu trả lời của Sam không giải quyết vấn đề của bạn, hãy thử thay đổi toolchain đến một phiên bản trước đó bằng cách thêm dòng sau vào file Application.mk của bạn:

NDK_TOOLCHAIN_VERSION=4.4.3 

Và chắc chắn rằng STL bao gồm cho dự án của bạn trong Eclipse tương ứng với chuỗi công cụ. Đến dự án-> Properties-> C/C++ General-> Paths và biểu tượng

chắc chắn rằng các thư mục sau đây được bao gồm:

EDIT: đây chỉ là những ví dụ; đảm bảo bạn sử dụng đúng nền tảng và 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: nhận xét về thư mục đầu tiên bị xóa; dường như glm trông cho các tập tin giới hạn được cung cấp bởi việc thực hiện STL hiện tại

+0

Cảm ơn @Erik vì đã trả lời nhanh. Sau khi thêm đúng hỗ trợ CDT (mà tôi đã bỏ sót), tôi đã thêm tất cả các tính năng mà bạn đề xuất. Tôi cũng đảm bảo nền tảng mục tiêu của mình phù hợp ở mọi nơi. Vẫn không có may mắn - cùng một lỗi! Có suy nghĩ gì không? – krames

+0

Tôi đề nghị bạn chắc chắn rằng đường dẫn stl của bạn là chính xác; từ những gì tôi có thể nhìn thấy glm tìm kiếm các tập tin giới hạn được cung cấp bởi việc thực hiện stl đang hoạt động. – Erik

+0

Hóa ra tôi không chú ý đủ. Tôi đã thêm tất cả điều này vào Android.mk khi thay vào đó nó nên đã được thêm vào Application.mk như cả bạn và Sam đề nghị. Hoạt động tốt ngay bây giờ! Cảm ơn bạn. – krames