如何使用SWIG从c++返回Java数组?

How can I return Java arrays from C++ using SWIG?

本文关键字:Java 数组 返回 c++ 何使用 SWIG      更新时间:2023-10-16

我想创建一个函数,它将返回一个静态数组,并使用SWIG包装这个函数,以便能够在Java中使用它。

假设我创建了自己的类,并且我有一个c++函数,看起来像

myClass* myFunction()
{
   // stuff here
}

我想用SWIG包装它,以便在Java中以这种方式使用它:

myClass[] array = myFunction();

我做了一些研究,但找不到有价值的东西(许多答案说如何创建函数的参数是数组,但没有说数组返回)。

感谢您抽出时间来回答我的问题。

你让我想起了我在研究你的问题的答案时做的噩梦:)。

我选择避免这个问题而不是解决它。我会创建一个非常简单的c++类,比如

class ArrayAdapter
{
public:
    int size();
    MyClass *getItem(int index);
};

ArrayAdapter myFunction();

如果您需要将其传递给期望数组或Collection的Java函数,请使用Java编写包装器代码。

我并不是说这是最好的解决方案,但是有时候写一些简单的可调试的东西比依赖SWIG的typemap魔法要好。