当我尝试在我的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问世以来),如果有人有任何建议,我将不胜感激。谢谢!
发布于 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"
}
}
}
发布于 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
}
...
}
发布于 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
希望这能对你有所帮助。
https://stackoverflow.com/questions/4893403
复制相似问题