Android NDK 源代码已成功编译和构建 - 但函数 'to_string' 无法在 Eclipse IDE 中解析
Android NDK Source Compiled & Build Successfully - But Function 'to_string' could not be resolved in Eclipse IDE
我搜索了如何在 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 中,我仍然收到错误 "Function 'to_string' could not be resolved"。因此,从 IDE 我无法 运行 android 应用程序。 (注意:在使用std::to_string之前,源代码编译正确)
我尝试包含如下头文件(在项目属性下->C/C++ general->Path and Symbols->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)
Application.mk
#APP_STL := stlport_static
APP_STL:=c++_static
我知道,我犯了一些小错误,但很长时间都找不到。任何 solution/suggestion 表示赞赏。
已编辑:
我只能在下面的技巧中通过 eclipse 使用 std::to_string & std::stoll。这些可以在极少数情况下帮助某些人。所以添加这一点来测试通过eclipse IDE对c++11的支持。仅在源文件或头文件打开时显示错误。只需关闭开源文件文档(.h、.c、.cpp)。关闭并重新打开日食。现在可以通过 android 模拟器编译和 运行 了。
您使用哪个版本的 Eclipse IDE?尝试更新到最新的火星版本,它可能会解决你的问题。
在参考了@Khaled Lakehal 的回答后,我自己为我的 question.Hope 发布了这个答案,这可能会对某些人有所帮助。
按照以下步骤使其工作:
- 将月食版本从 Luna 更新到最新的 Mars 2
- 从旧版本的eclipse导入现有项目
使用 -> 导入 -> 现有 Android 代码到工作区
- 导入后 C/C++ 项目转换有一些问题。所以按照这个 link 撤消 C/C++ 项目转换
- 将项目新转换为 C/C++。
- 为了消除错误,我参考了这个 link,并只选择了 "Run with build"
- 关闭并重新打开 IDE
现在可以使用 std::to_string 和 std::stoll 功能了。
我搜索了如何在 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 中,我仍然收到错误 "Function 'to_string' could not be resolved"。因此,从 IDE 我无法 运行 android 应用程序。 (注意:在使用std::to_string之前,源代码编译正确)
我尝试包含如下头文件(在项目属性下->C/C++ general->Path and Symbols->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)
Application.mk
#APP_STL := stlport_static
APP_STL:=c++_static
我知道,我犯了一些小错误,但很长时间都找不到。任何 solution/suggestion 表示赞赏。
已编辑:
我只能在下面的技巧中通过 eclipse 使用 std::to_string & std::stoll。这些可以在极少数情况下帮助某些人。所以添加这一点来测试通过eclipse IDE对c++11的支持。仅在源文件或头文件打开时显示错误。只需关闭开源文件文档(.h、.c、.cpp)。关闭并重新打开日食。现在可以通过 android 模拟器编译和 运行 了。
您使用哪个版本的 Eclipse IDE?尝试更新到最新的火星版本,它可能会解决你的问题。
在参考了@Khaled Lakehal 的回答后,我自己为我的 question.Hope 发布了这个答案,这可能会对某些人有所帮助。
按照以下步骤使其工作:
- 将月食版本从 Luna 更新到最新的 Mars 2
- 从旧版本的eclipse导入现有项目 使用 -> 导入 -> 现有 Android 代码到工作区
- 导入后 C/C++ 项目转换有一些问题。所以按照这个 link 撤消 C/C++ 项目转换
- 将项目新转换为 C/C++。
- 为了消除错误,我参考了这个 link,并只选择了 "Run with build"
- 关闭并重新打开 IDE
现在可以使用 std::to_string 和 std::stoll 功能了。