我想从NDK C++线程调用Java API,但是env-> FindClass()返回0.但是当我在主线程中调用Java API时,它运行良好.我已经在线程中调用AttachCurrentThread(),任何人都可以帮助我吗?
这是源代码:
JAVA代码:
public class simple_test extends Activity {
...
// This functin will be called in C++
public void PrintNdkLog(String slog) {
Log.e(logTagNDK, slog);
return;
}
}
Run Code Online (Sandbox Code Playgroud)
C++代码:
static JavaVM* g_JavaVM = NULL;
jobject getInstance(JNIEnv *env, jclass obj_class)
{
jmethodID c_id = env->GetMethodID(obj_class, "<init>", "()V");
jobject obj = env->NewObject(obj_class, c_id);
return obj;
}
// JNI OnLoad
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved)
{
g_JavaVM = jvm;
return JNI_VERSION_1_6;
}
// Call JAVA API "PrintNdkLog" …Run Code Online (Sandbox Code Playgroud) 谁能告诉我如何在Android NDK中创建一个线程?我正在将一些C++代码从Win32移植到Android,我不知道什么是与Win32 API AfxBeginThread()对应的NDK API.谢谢!