我正在尝试使用 AAssetManager 从 android apk 访问资产。但是,即使我已经包含了asset_manager.h 和asset_manager_jni.h,我仍然不断收到“对AAssetManager_fromJava 的未定义引用”。asset_manager.h 中的其他函数,如 AAssetManager_openDir(mgr, "") 等也无法被引用。
这是完整的代码
#define EXPORT_API
#include <string.h>
#include <jni.h>
#include <android\log.h>
#include <sys\types.h>
#include <android\asset_manager.h>
#include <android\asset_manager_jni.h>
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "com.devin - native", __VA_ARGS__)
JNIEnv* env=0;
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* pvt){
LOGD("JNI_OnLoad() called");
vm->AttachCurrentThread(&env, 0);
return JNI_VERSION_1_2;
}
EXPORT_API void LoadAsset(char* filename, jobject assetManager){
AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
/* More stuff */
}
#ifdef __cplusplus
};
#endif
此代码位于 .cpp 文件中,并使用 NDK R8 进行编译。我在这里做错了什么吗?