Getting the 'LOGE' was not declared in this scope error in NDK
I am getting these errors when i am trying to compile my sample native (cpp) code in my machine. I am trying to compile the native code with the help of the NDK from the cygwin.
I am getting the below errors, i tried adding the LDFLA开发者_开发技巧GS but still getting the same error LOCAL_LDLIBS := -llog
sh-4.1$ /cygdrive/c/Android/android-ndk-r6/ndk-build
Compile++ thumb : JNIExampleInterface <= JNIExampleInterface.cpp
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:5:44: error: android_runtime/AndroidRuntime.h: No such file or directory
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp: In function 'void callback_handler(char*)':
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:36: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:51: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:59: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp: In function 'void Java_com_nativeexample_JNIExampleInteace_callVoid(JNIEnv*, _jclass*)':
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:88: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp: In function '_jobject* Java_com_nativeexample_JNIExamplnterface_getNewData(JNIEnv*, _jclass*, jint, _jstring*)':
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:103: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:110: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:117: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp: In function '_jstring* Java_com_nativeexample_JNIExamplnterface_getStringInData(JNIEnv*, _jclass*, _jobject*)':
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:135: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:142: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp: In function 'void initClassHelper(JNIEnv*, const char*,jobject**)':
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:163: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:170: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:177: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp: In function 'jint JNI_OnLoad(JavaVM*, void*)':
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:193: error: 'LOGI' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:195: error: 'LOGE' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:221: error: 'android' has not been declared
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:222: error: 'NELEM' was not declared in this scope
D:/EclipseWorkspace/NativeExample/jni/JNIExampleInterface.cpp:223: error: 'LOGE' was not declared in this scope
make: *** [/cygdrive/d/EclipseWorkspace/NativeExample/obj/local/armeabi/objs/JNIExampleInterface/JNIExampleInterface.o
Error 1
sh-4.1$
I am following the example in the net
http://android.wooyd.org/JNIExample/If i am anything wrong please correct me. If my question is not perfect or not understandable, please leave a comment and give me a chance to correct the same.
Thanks & Regards,
SSuman185I am able to resolve only the LOGE error by using the below declarations:
#define LOG_TAG "libJNIExInterface"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
Double under score is present before the "android_log.....".
The other error which is "NELEM" doing the registration of the native functions at the android runtime is not required, but can be done only if you have whole android source code, when you are compiling this application along with the android source code, otherwise it is not possible).
So, Android runtime registration is not possible when you do not have the full android source code, anyway my app is working fine with out this as well.
In case someone have still this problem:
The logging macros have been renamed, and it's ALOGE
now.
精彩评论