我正在嘗試使用AAssetManager從Android版本中訪問資產。但是,我一直收到 「未定義的引用AAssetManager_fromJava」,即使我已經包含asset_manager.h和asset_manager_jni.h asset_manager.h的其他函數,如AAssetManager_openDir(mgr,「」)等也無法引用。對AAssetManager_fromJava的未定義引用
下面是完整的代碼
#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編譯。我在這裏做錯了什麼嗎?
我,即使我添加-landroid你LOCAL_LDLIBS我Android.mk文件 – Ege
@Ege有明確您的問題.. –
#LifeSaver 非常感謝這個同樣的問題 – FrickeFresh