3

我正在使用 Eclipse for Mac 开发本机应用程序,但无法解析 std::string 或 std::map 。

我已经不得不在路径中添加一些包含目录来处理 NDK 没有开箱即用的设置;目前我有

.../Development/android-ndk-r9/sources/cxx-stl/gnu-libstdc++/4.8/include
.../Development/android-ndk-r9/platforms/android-18/arch-arm/usr/include
.../vuforia-sdk-android-2-6-10/build/include
.../android-ndk-r9/sources/cxx-stl/system/include

设置为 C++ 符号路径,并且#include <string>似乎运行良好。但是,所有对 std::string 的引用都没有解析,Eclipse 说

无法解析类型“std::string”。

我知道这个代码可以构建,因为我在 Windows PC 上成功构建了它;这是某种描述的日食问题。我该怎么做才能使这些符号解析?

编辑 1:我看过里面<string>,似乎它主要包含一堆其他包含,例如#include <bits/c++config.h>. 所有这些似乎都解决了,但我要看看我是否能找到它们并确定std::string实际居住的地方。

编辑2:我可以找到std::basic_string,但std::string(还)没有。

编辑 3:std::basic_string我的源代码也不明显可见。

4

1 回答 1

1

我不确定这是否会成为您的答案。我的经历不同,我在 Windows 上,我只是想让 C(不是 C++)代码工作。但是遇到了完全相同的问题。我的解决方案似乎也可以用于 C++。据我所知,Mac 上的 Eclipse/ADT 与 Windows 上的非常相似。所以这应该不是问题。谁知道呢,我可能是在说我的——。

但是,我认为问题解决了两个方面。这是我解决它的方法。我按照教程: http: //mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

注意事项:

1) 在 Eclipse/ADT for Android 中开发时。它始终假定您使用 Java 编写。您需要将项目设为“混合 Java 和 C/C++”(不是我在教程之外看到它这样称呼它,哈哈)

2)您ndk-build应该可以从命令行正常工作(即使它可能无法在 Eclipse 中编译)。

3) 在本教程中,似乎让它能够识别 C/C++ 的两件事是“第 5 步:转换为 C/C++ 项目”,然后是第 6-8 步(这似乎是一大步)。

4) 在第 7 步中,在“构建命令”下。您可能必须使用完整路径(无空格)到您的ndk-build. (*Windows 用户ndk-build.cmd在此处输入“”)

5) 在第 8 步中,还包括一个完整路径.. 没有空格。但是,您可以在此处为“GNC C++”添加路径。(这是我对您的解决方案的猜测)

6)如果一切都失败了......它应该在C中工作。完全尝试第8步,并且只使用C语法。因为,在这个较早的教程(http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/)的顶部,它谈到了 NDK 的局限性。它说 C++ 功能是有限的。否则,这第二个教程似乎已经过时了。不再需要 Cygwin 和命令行编译,并且我的 Eclipse 安装具有开箱即用的 C/C++ 支持。但是,它仍然可用/有效。

PT

(在类似的注释中,对于那些寻求 NDK 帮助的人。还要确保在 Eclipse > Window > Preferences > Android > NDK > NDK Location 中输入 NDK 文件夹的无空格完整路径)

于 2014-02-03T23:51:53.660 回答