关于java和c++互调用的问题求助~

java 代码,在JniTestHelper.java中
public static native void TestInt(final int number);

在TestApp.java中调用
JniTestHelper.TestInt(55);

jni层的代码
void Java_com_Lib_TestApp_JniTestHelper_TestInt (JNIEnv *env,jint number)
{
CCLog( “Debug_TTT nubmer %d”, number );
再去调用C++的代码
在这里这个number不等于55啊,而是乱数153481328
}

在C++中传参数到java中是正确
反过来传,这个参数值就是不对,Log能打印了来,函数是执行到了
不知道那位大神知道这个是什么情况么,求指教,感激不尽~:14:

前面都没有错,但是

void Java_com_Lib_TestApp_JniTestHelper_TestInt (JNIEnv *env,jint number)
{
CCLog( “Debug_TTT nubmer %d”, number );
再去调用C++的代码
在这里这个number不等于55啊,而是乱数153481328
}

是不是在
extern

“C”

{

— Begin quote from ____

引用楼主zmy3489于2014-01-07 17:21发表的 关于java和c++互调用的问题求助~ :
java 代码,在JniTestHelper.java中
public static native void TestInt(final int number);

在TestApp.java中调用
http://www.cocoachina.com/bbs/job.php?action=topost&tid=178924&pid=tpc

— End quote

是在extern "C"里的,不然函数应该会调用失败吧,现在函数是调用正确的
如果我测试传String也能正确,但int不正确
void Java_com_Lib_TestApp_JniTestHelper_TestString(JNIEnv *env, jstring text)
{
const char *info= env->GetStringUTFChars(text, NULL);
CCLog( “Debug_TTT info %s”, info);
env->ReleaseStringUTFChars(text, info);
}
这样传过来的string是正确的
本人不是java程序员,对jni层代码也不熟悉,这些方法都是网上找的,不知道还有没有什么需要配置的没有
这里感觉jstring传过来被重新取了一次,而jint好像就是int,不需要再用什么函数重新取一次什么的,数值就不对,比较郁闷
不知道还有人遇到过这种情况没:14:

额,解决了,函数参数写错了,结帖了

额,原来。如果按照你上面的说法是没有问题的。

— Begin quote from ____

引用第3楼zmy3489于2014-01-08 11:38发表的 :
额,解决了,函数参数写错了,结帖了 http://www.cocoachina.com/bbs/job.php?action=topost&tid=178924&pid=870614

— End quote

— Begin quote from ____

引用第4楼yuye-chukong于2014-01-08 14:04发表的 :
额,原来。如果按照你上面的说法是没有问题的。

http://www.cocoachina.com/bbs/job.php?action=topost&tid=178924&pid=870731

— End quote

有误的,函数里我少写了一个jobject参数
编译链接什么的都没有问题
函数也会被调用到
但传参数过去就是错的
加上就ok了