cocos2d-x c 调用java_使用JNI使用Java来调用C的Android / Cocos2d-x不满意链接错误

编辑:我已经解决了这个问题(并通过更改以下内容找到了JNI苦难中的下一个问题!)

在Java和C中删除本机方法的“静态”声明,添加Java方法以获取我的SimpleGame类的实例,并调用

public static void callCppApiResponse (String result, String token, long context) {

**getInstance()**.cppAndroidApiResponse(token, 200, result, result.length(), context);

}

现在信息成功地从Java到C . 希望这可以帮助其他类似问题的人 .

原始邮寄:

我正在使用Cocos2d-x平台并为跨平台的iOS / Android应用程序编写C代码,并且我需要由相应的本机iOs / Android系统处理某些方法,因此我需要能够从C调用Java然后从Java调用C.

我能够为应用程序加载共享库并从C触发Java响应,但是当我尝试从Java调用C时,我得到以下logcat输出并且应用程序崩溃:

dalvik vm No implementation found for native Lorg/cocos2dx/simplegame/SimpleGame; cppSideAndroidApiResponse:(Ljava/lang/String;ILJava/lang/String;IJ)V

AndroidRuntime java.lang.UnsatisfiedLinkError: Native method not found: org.cocos2dx.simplegame.SimpleGame.cppAndroidApiResponse:(Ljava/lang/String;ILJava/lang/String;IJ)V

这是相关的Java代码:

package org.cocos2dx.simplegame;

private static native void cppAndroidApiResponse(String token, int response, String data, int dataLen, long context);

static {

System.loadLibrary("sb");

}

public static void callCppApiResponse (String result, String token, long context) {

//This is where the error is triggered

cppAndroidApiResponse(token, 200, result, result.length(), context);

}

并在C文件cppSide.h中:

# if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

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

#include

#endif

#ifdef __cplusplus

extern "C" {

#endif

# if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

JNIEXPORT static void JNICALL

Java_org_cocos2dx_simplegame_SimpleGame_cppAndroidApiResponse(JNIEnv *, jobject, jstring, jint, jstring, jint, jlong);

#endif

#ifdef __cplusplus

}

#endif

然后最后是cppSide.cpp文件

#include "cppSide.h"

extern "C" {

JNIEXPORT static void JNICALL

Java_org_cocos2dx_simplegame_SimpleGame_cppAndroidApiResponse(JNIEnv *env, jobject obj, jstring token, jint response, jstring data, jint length, jlong context)

{ ...do stuff...}

}

我知道我的共享库正在加载,因为我得到了基于C的加载屏幕,我知道JNI至少部分工作,因为我能够在另一种方法中从同一个cppSide.cpp文件调用Java . 我一直在研究JNI和Cocos2d-X文档,但无济于事 .

提前致谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值