c 无法调用java,无法使用JNI从C到Java进行调用

我有一个cocos2d-x库的小项目.我正在尝试使用C来调用

Java函数,但我在行中得到一个信号11异常:

// Get Status

status = jvm->GetEnv((void **) &env, JNI_VERSION_1_6);

但我不知道为什么会这样.

在我的Java类中,Getsocial.java存在这个函数:

private void tweet()

{

String score = "123";

String tweetUrl = "https://twitter.com/intent/tweet?text=Hello ! I have just got " + score + " points in mygame for Android !!!!";

Uri uri = Uri.parse(tweetUrl);

startActivity(new Intent(Intent.ACTION_VIEW, uri));

}

此功能启动导航器发布推文.从Java调用工作正常.

在我的C InterfaceJNI.h中我有:

#ifndef __INTERFACE_JNI_H__

#define __INTERFACE_JNI_H__

#include "cocos2d.h"

class InterfaceJNI

{

public:

static void postMessageToFB();

static void postMessageToTweet();

protected:

};

#endif // __INTERFACE_JNI_H__

在InterfaceJNI.cpp中:

#include "InterfaceJNI.h"

#include "platform/android/jni/JniHelper.h"

#include jni.h >

#include android/log.h >

using namespace cocos2d;

void InterfaceJNI::postMessageToTweet()

{

int status;

JNIEnv *env;

JavaVM *jvm;

jmethodID mid;

jclass mClass;

bool isAttached = false;

CCLog("Static postMessageToTweet");

// Get Status

status = jvm->GetEnv((void **) &env, JNI_VERSION_1_6);

CCLog("Status: %d", status);

if(status AttachCurrentThread(&env, NULL);

CCLog("Status 2: %d", status);

if(status GetStaticMethodID(mClass, "tweet", "()V");

CCLog("mID: %d", mid);

if (mid!=0)

env->CallStaticVoidMethod(mClass, mid);

//-----------------------------------------------------------

CCLog("Finish");

if(isAttached)

jvm->DetachCurrentThread();

return;

}

使用以下代码从代码的一部分调用此接口:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

InterfaceJNI::postMessageToTweet();

#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

ObjCCalls::trySendATweet();

#endif

在jvm-> GetEnv((void **)& env,JNI_VERSION_1_6)上返回空指针的情况如何; ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值