添加链接
注册
登录
link之家
链接快照平台
输入网页链接,自动生成快照
标签化管理网页链接
相关文章推荐
慷慨大方的皮带
·
When I deploy the ...
·
4 月前
·
私奔的青椒
·
Visual Studio ...
·
5 月前
·
俊逸的圣诞树
·
C++(十一)— map的插入、查找、删除 ...
·
1 年前
·
强健的汤圆
·
Node.js 执行系统命令_nodejs ...
·
1 年前
·
稳重的豆腐
·
25、Camunda Service ...
·
1 年前
·
link之家
›
jni java与c++交互返回三维数组jobjectArray_mb5fe559b5073e8的技术博客_
c++
数组
jni
https://blog.51cto.com/u_15067225/3480309
睿智的充值卡
1 年前
float[][][] liness=linefloat(
"111",
"222") ;
System.out.println(
"等值线的数量是:"+liness.length);
for (
int j=
0;j<liness.length;j++)
float[][] lines =liness[j];
System.out.println(
"第"+j+
"个线:");
System.out.println(
"第"+j+
"个线里点的个数是:"+lines.length);
for(
int k=
0;k<lines.length;k++)
float[] line =lines[k];
System.out.println(
"第"+j+
"个线:里有"+line.length+
"个点");
for(
int m=
0;m<line.length;m++)
System.out.println(
"第"+m+
"个点:的坐标是:"+line[m]);
2.等java代码编译之后生成class文件之后,调用javah方法编译成c++的头文件,编译时需要注意如果java类在一个包下面,需要带上包名称如:cn.gov.cma.cnn.webgis.active.TestHello,并且先用cd命令进入包外面的文件夹里编译,即在class文件下编译。
编译之后在clss下生成:cn_gov_cma_cnn_webgis_active_TestHello.h文件,
C++代码
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class cn_gov_cma_cnn_webgis_active_TestHello */
#ifndef _Included_cn_gov_cma_cnn_webgis_active_TestHello
#define _Included_cn_gov_cma_cnn_webgis_active_TestHello
#ifdef __cplusplus
extern
"C" {
#endif
* Class: cn_gov_cma_cnn_webgis_active_TestHello
* Method: linefloat
* Signature: (Ljava/lang/String;Ljava/lang/String;)[[[F
JNIEXPORT jobjectArray JNICALL Java_cn_gov_cma_cnn_webgis_active_TestHello_linefloat
(JNIEnv *, jclass, jstring, jstring);
#ifdef __cplusplus
#endif
#endif
JNIEXPORT jobjectArray JNICALL Java_cn_gov_cma_cnn_webgis_active_TestHello_linefloat(JNIEnv *env, jclass cls, jstring jMsg2, jstring jMsg3)
//获得二维数组的类
jclass intArrCls2 = env->FindClass(
"[[F");
//实例化数组对象,第一个参数数据的大小,第二个参数用来实例化用
//的类是一个二维数组,也就是数组里的每个元素都是一个二维数组,
//这样one就是一个三维数组。
jobjectArray one = env->NewObjectArray(2, intArrCls2, NULL);
for(
int k=0;k<2;k++)
//一维数组
jclass intArrCls = env->FindClass(
"[F");
//创建一个有10个元素,每个元素的值是 一维数组的数组
jobjectArray second = env->NewObjectArray(10, intArrCls, NULL);
//给以维数据填充值
for (
int i = 0; i < 10; i++) {
jfloat tmp[256];
/* make sure it is large enough! */
jfloatArray iarr = env->NewFloatArray(3);
tmp[0] = 21.0;
tmp[1] = 31.0;
tmp[2] = 41.0;
//把temp里的0-3的数据值设置给iarr里
env->SetFloatArrayRegion(iarr, 0, 3, tmp);
//给一维数组的第i个元素设置值
env->SetObjectArrayElement(second, i, iarr);
//删除临时元素iarr数组
env->DeleteLocalRef(iarr);
//给三维数组里的每个元素设置值,值是一个有一个元素组成的二维数据,每个元素是一个由三个浮点小数组成的三维数组
env->SetObjectArrayElement(one, k, second);
//删除临时元素二维数组
env->DeleteLocalRef(second);
return one;
推荐文章
慷慨大方的皮带
·
When I deploy the desktop application on client pc it install perfectly but when I run.exe it give s
4 月前
私奔的青椒
·
Visual Studio 2022无法打开源文件_c++ 无法打开 源 文件-CSDN博客
5 月前
俊逸的圣诞树
·
C++(十一)— map的插入、查找、删除 - 深度机器学习 - 博客园
1 年前
强健的汤圆
·
Node.js 执行系统命令_nodejs execsync_风硕依源的博客-CSDN博客
1 年前
稳重的豆腐
·
25、Camunda Service Task、任务监听器和执行监听器_camunda tasklistener_红鹰_Jake的博客-CSDN博客
1 年前