【问题标题】:Java and SWIG: class into a packageJava 和 SWIG:类到一个包中
【发布时间】:2015-07-02 11:32:50
【问题描述】:

我已遵循“Swig 和 Java”文档中的建议:

我正在编译我的代码并且我正在使用模板。我提供了一个 javapackage 类型映射,但 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

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

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

%nspace Package::OtherPackage::Class;

%include "header.h"

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

%typemap( javapackage ) std::vector &lt; double &gt; "Package" 有效吗?或者我在这里做错了什么?

谢谢

【问题讨论】:

    标签: java c++ namespaces package swig


    【解决方案1】:

    给出如下命令,将您的文件打包到特定的包中。 SWIG 不会创建该目录,因此请确保它事先存在。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-22
      • 2015-07-28
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 2020-04-10
      相关资源
      最近更新 更多