【发布时间】:2016-03-22 15:40:33
【问题描述】:
我搜索了如何在 android ndk 中使用 to_string()。经过长时间的搜索,我从这个link 更改了 Application.mk 文件,如前所述。并且 cpp 源只能从终端正确编译和构建。
Terminal output :
> ndk-build
Android NDK: WARNING: APP_PLATFORM android-21 is larger than android:minSdkVersion 9 in
/<some path>/Android/Exercise01/AndroidManifest.xml
[armeabi-v7a] Install : libndkfoo.so => libs/armeabi/libndkfoo.so
但在 ecplise IDE 中,我仍然收到错误,因为“无法解析函数 'to_string'”。所以从 IDE 我无法运行 android 应用程序。 (注意:在使用std::to_string之前,源码编译正确)
我尝试包含以下头文件(在项目属性->C/C++ 通用->路径和符号->GNU C++ 下)
vstring.h 来自 //android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.9/include/ext
&
basic_string.h 来自 //android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.9/include/bits
但没有运气。
Androi.mk 文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
TARGET_PLATFORM := android-21
TARGET_ARCH_ABI := armeabi-v7a
TARGET_ABI := android-21-armeabi-v7a # concatenation of above two variables
# Here we give our module name and source file(s)
LOCAL_MODULE := ndkfoo
LOCAL_C_INCLUDES := $(LOCAL_PATH)/header
LOCAL_SRC_FILES := src/NativeFunction.cpp src/clsArithmeticParser.cpp
include $(BUILD_SHARED_LIBRARY)
应用程序.mk
#APP_STL := stlport_static
APP_STL:=c++_static
我知道,我犯了一些小错误,但很长时间都找不到。任何解决方案/建议表示赞赏。
已编辑:
我只能在以下技巧中通过 Eclipse 使用 std::to_string 和 std::stoll 。这些可以帮助一些在罕见情况下的人。所以加上这个点来测试通过eclipse IDE对c++11的支持。仅在源文件或头文件打开时显示的错误。只需关闭开源文件文档(.h、.c、.cpp)。关闭并重新打开 Eclipse。现在它已准备好通过 android 模拟器编译和运行。
【问题讨论】:
-
为什么Application.mk中有多个
APP_STL-assignments?为什么要包含“basic_string.h”而不是#include <string>? -
@Michael,#include
已经存在了。仍然显示错误。添加“APP_STL:=c++_shared”后,std::to_string() 被识别并通过终端编译和构建。 -
@Michael,我排除了“APP_STL := stlport_static”和之前在终端中编译的源代码。仍然是显示错误的 Eclipse IDE。
-
你试过在 Eclipse 中重建索引吗?
-
@Michael,是的,多次。但没有运气。
标签: eclipse compiler-errors android-ndk java-native-interface