【问题标题】:Why Swig generate array for reference of variable in Java.?为什么 Swig 生成数组以在 Java 中引用变量。?
【发布时间】:2015-08-31 13:00:20
【问题描述】:

我正在使用 Swig 使用 C++ 应用程序做示例 Java。我想将 两个值从 Java 传递到 C++ 并从 C++ 取回更新后的值。我将两个值作为 pass by reference 从 Java 传递到 C++。 Swig 为每个引用变量生成一个包装器方法作为数组。

我做了什么:

Test.i

%module test

 %{

extern int test(int& val1,int& val3);

 %}

%include <typemaps.i>

%apply int& OUTPUT { int& val1,int& val3 }

extern int test(int& val1,int& val3);

CPP 文件

int test(int& val1,int& val2)
{

val1=5;
val2=10;

}

testJNI.java:

public class testJNI {

  public final static native int test(int[] jarg1,int[] jarg2);

}

test.java:

public class test {

  public static int test(int[] val2, int[] val2) {

    return testJNI.test(val1,val2);

Java 和 JNI 文件是 数组数据类型,用于通过引用传递变量。

还有其他方法可以在Java中生成通过引用的变量吗?

如何将每个变量的更新值从 C++ 返回到 Java不是数组格式。?

【问题讨论】:

    标签: java c++ pass-by-reference swig


    【解决方案1】:

    您是否正在尝试在同一个 int 变量中获取新值?它不能在 java 中完成,因为原语总是按值传递。 Swig 绕过它并传递可以写入的对象。

    【讨论】:

      猜你喜欢
      • 2022-08-02
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多