Java和SWIG:类成一个包

时间:2015-04-24 02:29:03

标签: java c++ namespaces package swig

我已经按照" Swig和Java"文档:

  

我正在编译我的代码而我正在使用模板。我提供了一个   javapackage typemap,但SWIG没有生成正确的JNI字段   描述。使用模板的重命名名称作为参数   " javapackage"类型表:

     

%typemap(javapackage)std :: vector" your.package.here"

     

%template(VectorOfInt)std :: vector;

,但它对我没用。

我有接口文件,如下所示:

%module moduleJava

%include "std_vector.i"
%include "std_wstring.i"

%typemap( javapackage )  std::vector < double >  "Package";
%typemap( javapackage )  std::vector < std::wstring > "Package";

// Instantiate templates used by example
%template(DoubleVector) std::vector < double > ;
%template(StringVector) std::vector < std::wstring > ;

%pragma( java ) jniclasspackage = "Package"

%include java_file1.i
%include java_file2.i

在包含的每个其他接口文件中,我有其他名称空间中的对象,但都在&#34; Package&#34;命名空间,如下所示:

//java_file1.i
%{
    #include "header.h"
%}

%nspace Package::OtherPackage::Class;

%include "header.h"

所以每个类都到了正确的位置,创建了文件夹并插入了包指示...除了DoubleVector和StringVector - 它们在全局范围内保持不变,并且jni签名与包不匹配。

%typemap( javapackage ) std::vector < double > "Package"是否有效?或者我在这里做错了什么?

由于

1 个答案:

答案 0 :(得分:0)

按照以下命令将文件打包到特定包中。 SWIG不会创建目录,因此请确保它事先存在。

swig -java -package com.company.swig -outdir com/company/swig inteface.i