昨天开始转用Android Studio,所以有些小白问题,请大家见谅。
问题1)jni/fft.cpp undefined reference to '__android_log_write'
Android.mk文件:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := fft-jni LOCAL_SRC_FILES := fft.cpp LOCAL_LDLIBS := -Lbuild/platforms/android-1.5/arch-arm/usr/lib -llog include $(BUILD_SHARED_LIBRARY)
ftt.cpp文件的部分代码,问题出现在LOGE和LOGV使用的地方:
#include#include #include #include "fft.h" #define LOGV(v) \ __android_log_write(ANDROID_LOG_VERBOSE, "fft-jni" , (v)) #define LOGE(v) \ __android_log_write(ANDROID_LOG_ERROR, "fft-jni", (v)) int jniRegisterNativeMethods(JNIEnv* env, const char* className, const JNINativeMethod* gMethods, int numMethods) { jclass clazz; LOGV("Registering natives:"); LOGV(className); clazz = env->FindClass(className); if (clazz == NULL) { LOGE("Native registration unable to find class:"); LOGE(className); return -1; } if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) { LOGE("RegisterNatives failed for:"); LOGE(className); return -1; } LOGV("Successfully registered natives."); return 0; }
网上很多方法都是围绕着添加LOCAL_LDLIBS := llog
的,但我这里系统生成的mk里已经有这一行了,问题的原因可能不在这个上面,又可能是我系统中没有llog这个包(?),又或者是路径错误。但要怎么才能知道我系统有没有llog这个东西呢?
(之后有问题难以解决会在这里继续麻烦大家,跪坐。)
已解决(?):后来发现这两个东西都是用来输出信息的,没啥意义,注释掉了。。程序也运行出来了