java - SWIG C++ 列表到 Java

标签 java c++ list typedef swig

我正在尝试使用 SWIG 来包装 C++,它定义了一个像这样的对象列表

    typedef std::list<Country> CountryList;

为此,我必须在接口(interface)文件中包含什么?

谢谢,

jack

最佳答案

只需将以下内容添加到您的 swig 接口(interface)文件中:

%include "std_list.i"
%include "Country.h" /* or declaration of Country */
%template(Country_List) std::list<Country>;

编辑:我不知道 swig 不提供 std_list.i用于 Java 包装 std::list .查看为 std::vector 提供的那个, 这可以适应 std::list .请注意,大多数功能不可用,因为您真的想使用迭代器来访问列表元素。无论如何,这里是:

标准列表.i

%include <std_common.i>

%{
#include <list>
#include <stdexcept>
%}

namespace std {
    template<class T> class list {
      public:
        typedef size_t size_type;
        typedef T value_type;
        typedef const value_type& const_reference;
        list();
        list(size_type n);
        size_type size() const;
        %rename(isEmpty) empty;
        bool empty() const;
        void clear();
        const_reference back();
        %rename(add) push_back;
        void push_back(const value_type& x);
        void pop_back();
    };
}

而不是换行 std::list<Country> ,您可能希望将其转换为 Java 中的相应列表。但是,为此,您需要编写适当的 typemaps .

关于java - SWIG C++ 列表到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33403828/

相关文章:

java - 点击检测不起作用?

Java:以迭代方式向上舍入双值

c++ - 构建 Poco C++ 库的静态版本

java - Httpclient/JSON对象

java - 在后台发送电子邮件

c++ - valgrind 错误 "Invalid read of size 4"

c++ - 理解 'using' 关键字 : C++

pandas - 按列表列中的元素对 Pandas Dataframe 进行分组

c# - 计算 2 个列表中存在的项目

python - 如何查找列表中嵌套列表的数量?