首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不能在Android NDK中包含像vector这样的C++标头

不能在Android NDK中包含像vector这样的C++标头
EN

Stack Overflow用户
提问于 2011-02-04 08:36:30
回答 7查看 102.6K关注 0票数 84

当我尝试在我的Android NDK项目中包含任何像vector这样的C++类(使用NDK r5b,最新的)时,我得到一个类似以下的错误...

Compile++ thumb : test-libstl <= test-libstl.cpp /Users/nitrex88/Desktop/Programming/EclipseProjects/STLTest/jni/test-libstl.cpp:3:18: error: vector: No such file or directory

其他在网上报告这个问题的人声称成功了,他们添加了

APP_STL := stlport_static

到他们的Application.mk文件。我已经做到了这一点,并尝试了APP_STL的所有其他可能值。我已经清理到项目,运行ndk-build clean,删除了obj和libs文件夹,但当我编译它时仍然找不到向量类。我已经为此工作了几个星期了(自从NDK r5问世以来),如果有人有任何建议,我将不胜感激。谢谢!

EN

回答 7

Stack Overflow用户

发布于 2015-03-23 14:35:53

如果你正在使用Android studio,当你使用ndk编译的时候,你仍然看到消息"error: vector: No this file or directory“(或者其他与stl相关的错误),那么这可能会对你有所帮助。

在项目中,打开模块的build.gradle文件(不是项目的build.grade,而是用于模块的文件),并在defaultConfig的ndk元素中添加'stl "stlport_shared"‘。

例如:

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.domain.app"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"

        ndk {
            moduleName "myModuleName"
            stl "stlport_shared"
        }
    }
}
票数 20
EN

Stack Overflow用户

发布于 2016-01-19 07:36:11

我正在使用Android Studio,从2016年1月19日开始,这对我来说是个不错的选择。(这似乎是每年都会改变的东西)

转到: app -> Gradle Scripts -> build.gradle (模块:应用程序)

然后在模型{ ...android.ndk { ...并添加一行: stl = "gnustl_shared“

如下所示:

model {

    ...

    android.ndk {
        moduleName = "gl2jni"
        cppFlags.add("-Werror")
        ldLibs.addAll(["log", "GLESv2"])
        stl = "gnustl_shared"     //  <-- this is the line that I added
    }

    ...

}
票数 9
EN

Stack Overflow用户

发布于 2014-08-18 18:49:45

即使是Sebastian在三年前已经给出了一个很好的答案,我仍然想在这里分享一个新的经验,以防你在新的ndk版本中遇到和我一样的问题。

我有编译错误,比如:

fatal error: map: No such file or directory
fatal error: vector: No such file or directory

我的环境是android-ndk-r9d和adt-bundle-linux-x86_64-20140702。我在同一个jni文件夹中添加Application.mk文件,并插入一行(且只有一行):

APP_STL := stlport_static

但不幸的是,它并没有解决我的问题!我必须将这3行添加到Android.mk中才能解决这个问题:

ifndef NDK_ROOT
include external/stlport/libstlport.mk
endif

我在here上看到了一个很好的分享,上面写着"'stlport_shared‘是首选“。因此,使用stlport作为共享库而不是静态库可能是更好的解决方案。只需将以下代码行添加到Android.mk中,然后不需要添加文件Application.mk。

ifndef NDK_ROOT
include external/stlport/libstlport.mk
endif
LOCAL_SHARED_LIBRARIES += libstlport

希望这能对你有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4893403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档