首页 > 解决方案 > 从 c++ 到 java 的 std::vector<int64_t> 返回不可用的 SWIGTYPE_p_in64_t

问题描述

我正在尝试使用 swig (v3) 来转换具有 std::vector 作为 java 代码入口的函数。但是当用 swig 编译时,我得到了一个带有 StdVector_int64 类的文件,它的方法 get(int i) 返回一个 SWIGTYPE_p_in64_t.... 这是不可用的。所以我的问题是如何将 SWIGTYPE_p_in64_t.java 转换为原始 java 类型?

我用模板指令制作了一个 tools.swig 文件,但它不能按需要工作。

C++ 头文件:

#pragma once

#include <vector>
#include "stdint.h"

extern void computeVector(std::vector<int64_t> _return);

痛饮文件:

%module(directors="1") LocalServices 
%include "std_vector.i"
%include "stdint.i"

%{
#include "tools.h"
using namespace cov::core;
%}

%template(StdVector_int64) std::vector< in64_t >;

%javaconst(1);

%include "tools.h"

命令启动:

swig -c++ -DSWIGWORDSIZE64 -java tools.swig

我希望 StdVector_int64 的 get(...) 方法返回一个长原始类型。

标签: javavectorswigint64

解决方案


推荐阅读