android - Eclipse-CDT 无法在 NDK 项目中找到 stdlib 符号

标签 android c++ eclipse android-ndk eclipse-cdt

我正在尝试使用 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 符号这样的工作也是如此,直到我尝试替换 #include<cstdlib> .然后失败并显示 Function 'malloc' could not be resolved等等。

奇怪的是,添加 STLport header (在 ${NDK_ROOT}/sources/cxx-stl/stlport/stlport 中)解决了我所有的问题。但是我在 GNU C++ 中链接,而不是在 STLPort 中链接,所以这充其量是一个不方便且不正确的“解决方案”。这些 header 可以工作但其他 header 不起作用似乎很奇怪。 Eclipse 是否无法索引或解析 GNU C++ header ?

安卓.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/

最佳答案

阅读这个,它有解决方案:

http://comments.gmane.org/gmane.comp.handhelds.android.ndk/14371

总结一下,以防有一天链接失效:

这是 gnuSTL_shared 模块声明中的错误。很抱歉,它将在下一个版本中修复。 同时,您可以手动更改 $NDK/sources/cxx-STL/gnu-libstdc++/Android.mk 并替换以下行:

LOCAL_EXPORT_LDLIBS := $(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libsupc++.a

与:

LOCAL_EXPORT_LDLIBS := $(call host-path,$(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libsupc++.a)

关于android - Eclipse-CDT 无法在 NDK 项目中找到 stdlib 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686931/

相关文章:

java - 在使用 OpenGL-ES、JNI 和 C++ 的 Android 上,帧似乎乱序了

c++ - 更改文件/路径扩展名

java - 从其他 Activity 获取整数变量

java - OSMDroid - map 不显示

java - 调用 "Endpoints.cmd"生成客户端库包时出错

java - Kotlin:如果条件为真,则将变量转换为不可空

c++ - 编译好的文件放到文件夹后无法运行程序

java - Eclipse 插件开发 - 自定义编辑器首选项

android - 更新 ADT 插件时出现依赖冲突

android - 如何在android中画一条线