某些应用程序需要glob.c用于路径例程,虽然它在android ndk 9中缺失。我尝试移植https://code.google.com/p/tesseract-android-tools/source/browse/tesseract-android-tools/jni/com_googlecode_tesseract_android/#com_googlecode_tesseract_android%2Fglibc并且它无效。我的意思是:
const char *tmp = "/data/data/name.antonsmirnov.android.myapp/sdk/";
glob(tmp, GLOB_MARK, 0, &glob_results);
fprintf(stderr, "gl_pathc = %i\n", glob_results.gl_pathc);
虽然该文件夹存在,但它打印glob_results.gl_pathc = 0:
MBA-Anton:platform-tools asmirnov$ ./adb shell ls /data/data/name.antonsmirnov.android.myapp/sdk/
binutils-compact#2.23#1
cppcheck#1.64a#1
gcc#4.8#2
libclang#3.3#1
libcloog#0.18.0#1
libgcc-compact-dev#4.8#1
libgmp#5.0.5#1
libisl#0.11.1#1
libmpc#1.0.1#1
libmpfr#3.1.1#1
libstdc++-compact-dev#4.8#1
ndk-sysroot-16#r9c#1
是否有任何有效的glob.c或者这个有什么问题?
更新:我也尝试过使用err函数,但是没有调用它:
int glob_error(const char *message, int error) {
std::cout << "glob error: " << message << "\n";
return 1;
}
// ...
glob(tmp, GLOB_MARK, &glob_error, &glob_results);
答案 0 :(得分:2)
嗯,我也是一样的,但是我使用了来自不同来源的另一个glob.c和glob.h,问题得到解决。您使用的代码必须失败的原因是因为作者已经取出了整理功能,但我所指的代码具有它。解决我的问题,我希望它会帮助别人。下面的源代码不需要您编译collate.c文件,因为作者已将必要的函数复制到glob.c中。
https://github.com/danstowell/GlastoCollider-Android/tree/master/jni/Source/libc