【问题标题】:Android NDK Source Compiled & Build Successfully - But Function 'to_string' could not be resolved in Eclipse IDEAndroid NDK 源代码编译和构建成功 - 但函数“to_string”无法在 Eclipse IDE 中解析
【发布时间】: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 &lt;string&gt;
  • @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


【解决方案1】:

您使用什么版本的 Eclipse IDE?尝试更新到最新的 Mars 版本,它可能会解决您的问题。

【讨论】:

  • 在最新的 eclipse 安装之后......也没有运气。
  • +1 有效....... 更新最新版本并参考此link 后有效。在我的例子中,只有 “Run with build 被选中”。关闭并重新打开 IDE & Index->​​Rebuild
  • 很高兴听到它对您有用!感谢您与我们分享您的解决方案。
【解决方案2】:

在参考了@Khaled Lakehal 的答案后,我自己为我的问题发布了这个答案。希望这可能对某人有所帮助。

按照以下步骤使其工作:

  1. 将 eclipse 版本从 Luna 更新到最新的 Mars 2
  2. 从旧版eclipse中导入已有项目 使用 -> 导入 -> 现有的 Android 代码到 Workspace 中
  3. 导入后 C/C++ 项目转换出现问题。所以跟着这个link撤消C/C++项目转换
  4. 将项目新转换为 C/C++。
  5. 为了消除错误,我参考了这个link,并只选择了“Run with build”
  6. 关闭并重新打开 IDE

所以现在可以使用 std::to_string 和 std::stoll 函数了。

【讨论】:

    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多