dum*_*lus 1 c++ java dll java-native-interface native
以下代码在JAVA中声明
private native static Vector< Double > computeSimXML(Vector < String > vDocsPath);
Run Code Online (Sandbox Code Playgroud)
我想将参数vDocsPath(定义为Vector <String>)传递给C++,JNI生成的代码如下:(我已经实现了一些)
/*
* Class: SimXMLModule
* Method: computeSimXML
* Signature: (Ljava/util/Vector;)Ljava/util/Vector;
*/
JNIEXPORT jobject JNICALL Java_SimXMLModule_computeSimXML
(JNIEnv *, jclass, jobject)
{
vector<double> dist;
dist.push_back(5.0);
dist.push_back(6.0);
}
Run Code Online (Sandbox Code Playgroud)
如何获取vDocsPaththrough 的值jobject,并将dist(Vector< Double >在JAVA中定义)返回给JAVA?
这对于从JNI开始来说不是一个好的功能 - 正确实现它将需要一些工作.
Vector<String>参数是一个普通的非泛型Vector运行时.Vector<Double>返回值是一个普通的非通用Vector运行时Vector函数以从参数中获取数据Double对象,设置内部double和调用Vector方法以设置返回值.我建议您将功能签名更改为:
private native static double[] computeSimXML(String[] vDocsPath);
Run Code Online (Sandbox Code Playgroud)
JNI接口的使用数组是很多比你想做什么简单.你可以重复的进行参数GetArrayLength和GetObjectArrayElement,你可以创建和操作与返回值NewDoubleArray,GetArrayElements和ReleaseArrayElements
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |