相关疑难解决方法(0)

SWIG(v1.3.29)生成的C++到Java Vector类没有正常运行

我有一些本机C++代码,我正在使用SWIG转换为Java,以便我的Java应用程序可以使用它.特别是有一些函数返回std :: vector.这是我的界面文件的片段:

%include "std_vector.i"
namespace std {
  %template(Vector) vector<double>;
  %template(Matrix) vector<vector<double> >;
}

%include "std_string.i"
Run Code Online (Sandbox Code Playgroud)

std_string.istd_vector.i被列入我的,我使用痛饮的构建.我的第一个惊喜是Java输出包含了SWIG的"自有"版本的Vector类(与使用相反java.util.Vector).我真正的问题是从这些函数返回的Vector似乎不起作用.例如,我无法使用get()(有时崩溃程序)或size()返回负值的函数来检索其内容.我知道Vectors包含数据,因为我编写了相同函数的'String'版本,它们只是遍历Vectors(回到本机C++代码中)并以逗号分隔String值返回内容.虽然这是一个有效的解决方法,但最终我希望这能够正常工作,因为我能够接收和操纵Vectors.任何帮助/提示将非常感激.

c++ java java-native-interface swig vector

11
推荐指数
1
解决办法
4345
查看次数

使用swig生成std :: vector到java.util.Vector代码

我尝试用SWIG生成java代码

MyList.h中,我声明了一个名为_list的自定义列表对象

List<T*> _list;
Run Code Online (Sandbox Code Playgroud)

这个List类继承自vector

class List : public vector<T>
Run Code Online (Sandbox Code Playgroud)

在业务类中(在C++中),我返回一个自定义对象列表

List<MyObject> getMyList(){
   ....
   return list;
}
Run Code Online (Sandbox Code Playgroud)

所以我想生成java代码,我可以在这里检索这个C++ List作为java.util.List或java.util.Vector.

在我的swig.i文件中,我无法管理如何体现

%typemap(jstype) List "java.util.Vector"
namespace std {
   %template(CustomVector) vector<MyObject>;
}
Run Code Online (Sandbox Code Playgroud)

任何种类的帮助如何配置此swig.i模板文件或一些示例代码生成java.util.List/Vector返回函数将不胜感激.

谢谢.

c++ java swig list vector

6
推荐指数
1
解决办法
5612
查看次数

标签 统计

c++ ×2

java ×2

swig ×2

vector ×2

java-native-interface ×1

list ×1