在 JNI 中返回多维数组

2023-12-08

我想将一个已经存在的多维数组从 C++ 返回到 Java 代码。我的代码如下:

int cells [3][3] = {{0}};

int[][]
Java_com_packagename_appname_GameView_addNew(
        JNIEnv *env,
        jobject, int row, int col, int val) {
    cells[row][col] = val;
    return cells;
}

但显然它不起作用。正确的方法是什么?


int cells [3][3] = {{0}};

jobjectArray
Java_com_packagename_appname_GameView_addNew(
        JNIEnv *env,
        jobject, int row, int col, int val) {

    cells[row][col] = val;

    // Get the int array class
    jclass cls = env->FindClass("[I");

    jintArray iniVal = env->NewIntArray(3);
    // Create the returnable jobjectArray with an initial value
    jobjectArray outer = env->NewObjectArray(3,cls, iniVal);

    for (int i = 0; i < 3; i++)
    {
        jintArray inner = env->NewIntArray(3);
        env->SetIntArrayRegion(inner, 0, 3, cells[i]);
        // set inner's values
        env->SetObjectArrayElement(outer, i, inner);
        env->DeleteLocalRef(inner);
    }
    return outer;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JNI 中返回多维数组 的相关文章

随机推荐

  • 一次性更改多个文件的 EOL

    Notepad 或者甚至使用其他工具 有什么方法可以自动更改行结尾一次性处理多个文件 即转换 Windows EOL 的混合 CRLF 和 UNIX EOL LF 文件全部为 Windows EOL CRLF The Replace对话框可
  • 将 printf 重定向到两个流

    我正在扩展一个现有的 C 项目 将所有信息打印到stdout with printf 我希望将此信息打印到标准输出和日志文件 如果我是原始项目的贡献者 我会替换所有printf使用我的自定义日志函数进行调用 唉 我不是 所以这是我的问题 是
  • SQL 包含问题

    谁可以给我解释一下这个 我有两个查询及其结果如下 query select from tbl where contains name he AND ca 结果集 赫兹租车 海明威的小酒馆 query select from tbl wher
  • Unity 3D/球体中的翻转法线

    我已经为我的游戏编写了这段代码 我想要的是统一翻转纹理上的法线 我有一个模型和一个纹理 希望纹理位于球体模型内部而不是外部 我想通过在翻转纹理顶部的球体内部的图像周围移动相机来创建 360 度全景效果 现在 当我第一次按下播放按钮时 它运行
  • PHP domDocument 删除子节点的子节点

    如何删除子节点的父节点 但保留所有子节点 XML 文件是这样的
  • 插入一行并避免竞争条件 (PHP/MySQL)

    我正在开发一款多人游戏 该游戏有一个类似大厅的区域 玩家可以选择要进入的 区域 大厅网关由 PHP 提供支持 而实际的游戏玩法则由一台或多台 Java 服务器处理 数据存储是MySQL 幸福之路 玩家选择一个区域并告诉大厅他想进入 大厅检查
  • 如何使用 PowerShell 导出特定的 Excel 列?

    我有一个包含多列的 Excel 我想将一些特定列导出到 xlsx文件 但它导出 Excel 的前 3 列 而不是具有特定标题的列 Host CPU usage Memory usage SourceFileDirectory C TEMP
  • 使用方法为案例类生成伴随对象(字段 = 方法)

    使用 scala macros 为案例类生成伴随对象 我尝试过的一些代码示例 它有效 我可以获取元组列表 名称 gt 类型 但如何在同一范围内生成对象 import c universe val tpe weakTypeOf T val f
  • 从 R 中的函数写入全局环境

    我是 R 新手 在理解如何处理本地和全局环境方面遇到一些困难 我检查了Post关于局部和全局变量 但无法弄清楚 例如 如果我想使用一个函数绘制几张图并像这样保存它们 PlottingFunction lt function type typ
  • 嵌套 CSS 网格布局在 Chrome 和 Firefox 中的不同行为

    我正在尝试使用 CSS 网格布局来模拟一些响应行为 特别是 grid template columns repeat auto fill minmax 250px 1fr 我的例子https codepen io elgs pen goNx
  • 删除评论标签但不满足于 BeautifulSoup

    我正在使用 BeautifulSoup 练习一些网页抓取 特别是我正在查看 NFL 比赛数据 更具体地说是本页上的 球队统计 表 https www pro football reference com boxscores 20180906
  • 如何将 IceFaces 组件映射到 java.util.Calendar 字段?

    有谁知道如何组件
  • HttpURLConnection c = URL.openConnection(); c.setRequestProperty() 不起作用

    这里的代码是一个普通的Java应用程序 而不是Android应用程序 它旨在将C2DM消息发送到具有YOUR REGISTRATION STRING的设备 作为具有auth key的开发人员 问题如下所述 import java io Bu
  • 为什么 mov 不能设置代码段寄存器 CS,尽管它可以设置其他寄存器?

    我需要知道使用 mov 指令直接加载代码段寄存器是否有任何限制 在从实模式切换到保护模式时 这一点让我印象深刻 我发现为了将正确的值放入代码段中 使用 跳转 指令来设置正确的段 那么跳转指令的这种使用是否是由于任何这样的限制 为什么我们不能
  • (无法修复)程序集存在于 SQL Server 2014 上,但它声称没有它

    Update 这个问题无法修复 https connect microsoft com SQLServer Feedback Details 809697 我正在尝试使用 net 4 5 创建 SQL CLR 程序集 但它告诉我它丢失了sy
  • 从日历周获取月份 (SQL Server)

    我有以下问题 在 Microsoft 的 SQL Server 中 我有一个表 其中存储了一年和日历周 从星期一开始 现在 我想编写一个函数 返回该日历周开始的月份 即 如果星期一是 7 月 31 日 它应该返回 7 我还没有找到一个内置函
  • git diff hunk 标头中的摘录来自哪里?

    当我使用git diff在 C 文件中 我看到类似这样的内容 diff git a foo cs b foo cs index ff61664 dd8a3e3 100644 a foo cs b foo cs 15 6 15 7 stati
  • ASP.NET MVC 5 ajax 错误状态文本始终为“错误”

    我在向 ajax 调用发送错误自定义消息时遇到问题 我的控制器返回如下内容 return new HttpStatusCodeResult 400 My error 我的 ajax 代码如下所示 error function xhr htt
  • dateFromString 更改后 24 小时返回 nil

    NSDateFormatter timeFormat NSDateFormatter alloc init timeFormat setDateFormat hh mm a NSDate sourceDate timeFormat date
  • 在 JNI 中返回多维数组

    我想将一个已经存在的多维数组从 C 返回到 Java 代码 我的代码如下 int cells 3 3 0 int Java com packagename appname GameView addNew JNIEnv env jobject