- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 AAssetManager 从 android apk 访问 Assets 。但是,我不断得到“未定义对 AAssetManager_fromJava 的引用”,即使我包含了 asset_manager.h 和 asset_manager_jni.hasset_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 进行编译。我在这里做错了什么吗?
最佳答案
我的错误。我没有将“android”库添加到链接器。我实际上已经在 Visual Studio Express 上设置了 NDK 开发环境,默认情况下“android”库没有添加到我的项目中。
如果您使用的是 makefile,请务必在使用 native AssetManager 时将 -landroid 添加到您的 LOCAL_LDLIBS。
关于android - 对 AAssetManager_fromJava 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552208/
我正在尝试使用 AAssetManager 从 android apk 访问 Assets 。但是,我不断得到“未定义对 AAssetManager_fromJava 的引用”,即使我包含了 asse
我正在使用 Android NDK 并且需要访问资源。 Assets 访问的一个要求似乎是获取 AssetManager 引用。 查看 NDK 示例 ( https://github.com/andr
这是完整的警告: JNI WARNING: instance fieldID 0x571819bc not valid for class Ljava/lang/Class; in Lcom/brok
我是一名优秀的程序员,十分优秀!