无法在Android NDK r5中包含STL头文件

6

我有一个非常简单的应用程序:

#include <vector>

void android_main(struct android_app* state)
{

}

当我构建它时,出现以下错误:

test/jni/main.c:14:18: 错误:vector: 没有那个文件或目录

我该如何包含STL头文件?我找到了stlport,并且可以看到头文件存在于它的目录中,但是如何包含它们?

编辑:我的Application.mk文件有以下行:

APP_STL := stlport_static
2个回答

5

test/jni/main.c:14:18: 错误: vector: 没有那个文件或目录

您正在使用 C 编译器编译。请将扩展名更改为 *.cpp,并检查工具链中是否调用了 C++ 编译器。


这不应该有影响,因为错误是文件未找到。 - Mark Ingram
@Mark:当然可以。C和C++编译器的包含路径可能不同。 - Yakov Galka
@Mark: 注意:经验证,当以C语言编译时,gcc会拒绝使用<vector>。 - Yakov Galka
你说得完全正确,我今天早上到公司就试了一下。非常感谢 :) - Mark Ingram

4

请阅读 $NDKROOT/docs 中的文档。尤其是 CPLUSPLUSSUPPORT.html。

默认的 C++ 库仅支持非常有限的功能。可以通过在 Application.mk 中使用 APP_STL 变量来更改 c++ 库。


1
嗨,我已经阅读了那个文件,最初忘记提到的是我在Application.mk中设置了APP_STL。 - Mark Ingram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接