Undefined reference to AAssetManager_fromJava
Ich versuche, Zugriff auf Vermögenswerte von einem android-apk verwenden AAssetManager. Allerdings, ich bekomme den
"Undefined reference to AAssetManager_fromJava", obwohl ich habe asset_manager.h und asset_manager_jni.h
Andere Funktionen von asset_manager.h, wie AAssetManager_openDir(mgr, "") usw, auch nicht verwiesen werden.
Hier ist der komplette code
#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
Dieser code in einer .cpp-Datei und erstellt mit NDK R8. Mache ich etwas furchtbar falsch hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein Fehler. Ich habe nicht "android" - Bibliothek Hinzugefügt, um den linker. Ich habe eigentlich setup NDK dev-Umgebung, die auf Visual Studio Express und "android" - Bibliothek nicht Hinzugefügt, um mein Projekt standardmäßig.
Wenn du mit makefiles, werden Sie sicher, dass Sie -landroid, um Ihre LOCAL_LDLIBS bei der Verwendung von native AssetManager.
Android.mk
oderLOCAL_LDLIBS
.Android-Studio-Entwickler, Wenn Sie ExternalNativeBuild Datei, die aufgerufen wird, "CMakeList.txt" hängen Sie diesen code in die Datei CMakeList.txt
wenn Sie auch native lib kann man leicht ergänzen, wie dies
Sollte es funktionieren!
Habe ich noch folgende zu gradle.bauen
android.ndk {
ldLibs.addAll(["android", "log"])
}
Ich es behoben durch hinzufügen der folgenden Android.mk