【发布时间】:2012-01-30 23:55:56
【问题描述】:
我正在尝试使用 NDK 和 C++ 编写一个简单的 Android 应用程序。具体来说,我想使用最新版本的 NDK (r7) 中包含的 gnustdc++。 JNI 库已经像 C 一样编译并运行得非常好,但是现在我尝试引入 C++,我遇到了一些问题。
我已将${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/include/ 添加到我的项目的包含路径中,并且#includes 内联已解决。但是,尝试实际使用任何 STL 类(例如 vector)会导致 Symbol 'vector' could not be resolved。
从<stdlib.h> 导入的所有标准 C 符号都可以正常工作,直到我尝试用 <cstdlib> 替换 #include。然后它以Function 'malloc' could not be resolved 失败,依此类推。
奇怪的是,添加 stlport 标头(在 ${NDK_ROOT}/sources/cxx-stl/stlport/stlport 中)解决了我的所有问题。但是我在 GNU C++ 中链接,而不是 STLPort,所以这充其量是一个不方便和不恰当的“解决方案”。这些标头可以工作但其他标头不起作用,这似乎很奇怪。 Eclipse 是否无法索引或解析 GNU C++ 标头?
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libfoobar-jni
LOCAL_SRC_FILES := foobar.cpp
LOCAL_LDLIBS := -llog -lGLESv2
LOCAL_C_INCLUDES := sources/cxx-stl/gnu-libstdc++/include/
LOCAL_CFLAGS := -g -std=c99
include $(BUILD_SHARED_LIBRARY)
应用程序.mk
APP_STL := gnustl_shared
编辑:我根据以下内容设置我的项目:
http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/
【问题讨论】:
标签: android c++ eclipse android-ndk eclipse-cdt