JNI无法将Java double转换为jdouble

JNI无法将Java double转换为jdouble,java,c++,java-native-interface,native-methods,Java,C++,Java Native Interface,Native Methods,我试图把java 双传递给C++中的一个原生方法,它希望代码代码>作为输入参数。但是JNI包装器方法将参数保存为jobject,而不是jdouble。有人能告诉我如何解决这个问题吗 < >可以将作业> > jBudi< /Cube > < p>您可以很容易地将代码>双< /代码>转换为C++、中的两倍。 JNIEXPORT jdouble JNICALL Java_PriceEngine_getPrice (JNIEnv *env, jobject thiz, jobject price)

我试图把java <代码>双<代码>传递给C++中的一个原生方法,它希望代码<2>代码>作为输入参数。但是JNI包装器方法将参数保存为
jobject
,而不是
jdouble
。有人能告诉我如何解决这个问题吗


< >可以将<代码>作业> <代码> > <代码> jBudi< /Cube >

< p>您可以很容易地将代码>双< /代码>转换为C++、

中的两倍。
JNIEXPORT jdouble JNICALL Java_PriceEngine_getPrice (JNIEnv *env, jobject thiz, jobject price) {
    jclass jcDouble = env->FindClass("java/lang/Double");
    jmethodID jmidDoubleValue = env->GetMethodID(jcDouble, "doubleValue", "()D" );
    double dPrice = env->callDoubleMethod(jmidDoubleValue, price);
}

但是在Java中仍然这样做更容易。

删除了不必要的感谢等。但是这个问题需要改进,因为它太宽泛,而且没有研究。为什么?为什么不把它作为一个
double
传递并避免整个问题呢?这看起来像是@EJP的复制品,我希望这样做,但我不能。基本上,我创建了一个Java类作为公共本机double-getPrice(double-price)。当我将其转换为.h文件时,它将方法转换为,JNIEXPORT jdouble JNICALL Java_PriceEngine_getPrice(JNIEnv*,jobject,jobject);这就是我有这个问题的原因。@EJP当我试图向你解释时,我意识到了我的错误。我试图通过双,而不是双,这导致了问题。不管怎样,谢谢。签名中的小错误:应该是D,而不是J.jmethodidjmiddublevalue=env->GetMethodID(jcDouble,“doubleValue”,“()D”);谢谢现在我看到有人在读这些答案;-)