JNI上调用NDK编译的C++库有关问题

JNI下调用NDK编译的C++库问题
高分跪求大侠帮忙:
1 下面是我的JAVA工作路径和工程目录情况
TestCommon_Android(java workspace)
  .metadata(workspace config)
  TestBaseThread(project folder)
  assets(folder)
  bin(folder)
  gen(folder)
  jni(folder)
  Android.mk(belong to jni)
Application.mk(belong to jni)
com_Android_oray_TestBaseThread_TestBaseThread.cpp(belong to jni)
com_Android_oray_TestBaseThread_TestBaseThread.h(belong to jni)
stdafx.h(代码是从VC里移过来的,为防止编译报错加了个这个, (belong to jni))
TestThread.cpp(belong to jni)
TestThread.h(belong to jni) 
 libs(folder)
  armeabi(folder, belong to libs)
  libTestBaseThread_jni.so(armeabi下的,这个NDK编译生成的)
src

我的Android.mk :
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := TestBaseThread_jni
LOCAL_SRC_FILES := TestThread.cpp \
com_Android_oray_TestBaseThread_TestBaseThread.cpp \
./../../../../common/thread/BaseThread.cpp 


LOCAL_LDLIBS := -lm -llog
#LOCAL_CPPFLAGS := -D_STLP_USE_SIMPLE_NODE_ALLOC

LOCAL_C_INCLUDES += \
/cygdrive/e/Software/android.setup/android-ndk-r5-windows/android-ndk-r5/sources/cxx-stl/stlport/stlport \
$(JNI_H_INCLUDE)

include $(BUILD_SHARED_LIBRARY)


我的Application.mk:

# The ARMv7 is significanly faster due to the use of the hardware FPU
#APP_ABI := armeabi armeabi-v7a
APP_CPPFLAGS += -fexceptions
APP_STL := stlport_shared
APP_CPPFLAGS += -frtti


我的com_Android_oray_TestBaseThread_TestBaseThread.h
C/C++ code

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_Android_oray_TestBaseThread_TestBaseThread */

#ifndef _Included_com_Android_oray_TestBaseThread_TestBaseThread
#define _Included_com_Android_oray_TestBaseThread_TestBaseThread
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_Android_oray_TestBaseThread_TestBaseThread
 * Method:    testThread
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_Android_oray_TestBaseThread_TestBaseThread_testThread
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif



 我的com_Android_oray_TestBaseThread_TestBaseThread.cpp
C/C++ code

#include "TestThread.h"
#include "com_Android_oray_TestBaseThread_TestBaseThread.h"
#include <android/log.h>
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#define JNIREG_CLASS "com/Android/oray/TestBaseThread/TestBaseThread"

#define LOG_TAG "TestBaseThread"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)

#ifdef __cplusplus
extern "C" {
#endif
    /*
    * Class:     com_Android_oray_TestBaseThread_TestBaseThread
    * Method:    ThreadTest
    * Signature: ()V
    */
JNIEXPORT void JNICALL Java_com_Android_oray_TestBaseThread_TestBaseThread_testThread
  (JNIEnv *, jobject)
    {

        LOGE("jni OnLoad .............. \n");


        CTestThread oMyTestThread;
        oMyTestThread.Run();
    }

    /** * Table of methods associated with a single class. */ 
    static JNINativeMethod gMethods[] = 
    { 
        { "ThreadTest", "()V", (void*)Java_com_Android_oray_TestBaseThread_TestBaseThread_testThread },
    }; 
    JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) 
    { 
        jint r; 
        jclass k; 
        JNIEnv *env; 
        jint i, size = ARRAY_SIZE(gMethods); 
        r = vm->GetEnv((void **)&env, JNI_VERSION_1_4);
        k = env->FindClass(JNIREG_CLASS); for (i = 0; i < size; i++) 
        { 
            r = env->RegisterNatives(k, &gMethods[i], i+1); 
        } 
        return JNI_VERSION_1_4; 
    } 
#ifdef __cplusplus
}
#endif