Java 如何在C++;到爪哇
我有一个关于数据类型的问题,我想在开始编码之前弄清楚它!假设我有一个C++方法,它返回一个数组,或者是一个双倍的缓冲区。然后我需要使用JNI头将这个double[]转换成jdouble,这样Java就可以处理数据了 我的第一个问题是我应该配置我的C++方法来返回一个双打数组,还是一个双打缓冲区。我知道它们几乎一样,但不知道哪一个更好。另外,如何以Java可以理解的方式转换缓冲区 这就是我到目前为止所做的:Java 如何在C++;到爪哇,java,android,c++,java-native-interface,type-conversion,Java,Android,C++,Java Native Interface,Type Conversion,我有一个关于数据类型的问题,我想在开始编码之前弄清楚它!假设我有一个C++方法,它返回一个数组,或者是一个双倍的缓冲区。然后我需要使用JNI头将这个double[]转换成jdouble,这样Java就可以处理数据了 我的第一个问题是我应该配置我的C++方法来返回一个双打数组,还是一个双打缓冲区。我知道它们几乎一样,但不知道哪一个更好。另外,如何以Java可以理解的方式转换缓冲区 这就是我到目前为止所做的: JNIEXPORT jdouble[] JNICALL Java_Test_getDoub
JNIEXPORT jdouble[] JNICALL Java_Test_getDouble[](JNIEnv *env, jobject obj)
{
double[] temp= new double[someSize];
temp = // call my C++ code
jdouble result = new jdouble[someSize];
for(i = 0; i < someSize; i++)
converting double in temp to jdouble in result;
return result;
}
JNIEXPORT jdouble[]JNICALL Java_Test_getDouble[](JNIEnv*env,jobject obj)
{
double[]temp=新的double[someSize];
TEMP=//调用我的C++代码
jdouble result=newjdouble[someSize];
对于(i=0;i
然后Java可以对数据做任何它想做的事情
我的代码有意义吗?我读了一些关于ByteGetElement()
的帖子,但我不知道它是否可以在这里应用。如果你能给我一个简单的例子,这将是非常有帮助的。最后,我仍然需要知道是应该使用数组还是双精度缓冲区
非常感谢。就C而言,jdouble实际上等于double
// just for the sake of the example this buffer exists and holds the double values in C
double* sourceBuffer;
// allocate the jdouble Array
jdoubleArray output = (*env)->NewdoubleArray(env, someSize);
// check if it was allocated correctly
if (NULL == output) return NULL;
// commit the contents of the double* array (sourceBuffer in this example) into the Java array
(*env)->SetDoubleArrayRegion(env, result, 0, someSize, sourceBuffer);
return result;
这可能会有帮助,这是一个整数数组,但我想double的方法是类似的。啊,非常有用,让我来研究一下,谢谢