【发布时间】:2014-04-01 23:48:01
【问题描述】:
我正在使用 C++ 库构建 Android 应用,但发送文件路径时遇到问题。
我在jni/processing.cpp 中有我的 JNI 函数:
JNIEXPORT jfloat JNICALL Java_com_my_package_path_getMyFunction
(JNIEnv *env, jobject obj, jstring param) {
string str = env->GetStringUTFChars(param, 0);
string filePath = "src/textfile/";
return getResult(str, filePath);
}
而getResult() 是jni/src/library/myclass.cpp 的成员函数。
我在jni/src/textfiles/ 下有几个文本文件,我想将此路径作为参数发送给getResult() 函数。由于processing.cpp 在jni/ 文件夹中,我将路径设置为src/textfile/,但它不起作用。 (getResult()函数找不到路径)
我已经尝试过filePath = "../../textfile/" 这是来自jni/src/library/myclass.cpp 的相对路径,它也不起作用。
但是,我的所有其他 JNI 函数(不使用文件路径)都可以正常工作。
有人可以帮忙吗?我应该使用绝对路径吗?那么,如何获得呢?
【问题讨论】:
-
项目随机位置中的文件(包括 src/ 文件夹)将不会在运行时在设备上可用。打包在 res/ 或 assets/ 文件夹下的项目可能可用,但实际上并不是文件系统中的文字 files,因此只能通过特殊的 Android-unique 访问API。
-
@ChrisStratton :我正在研究使用
assets/文件夹,非常感谢!
标签: android c++ android-ndk java-native-interface