1

我声明了一些类型映射:

    #
    #  Gv::GvString -> Java - String
    #
    %feature("director") Gv::ErrorHandler;
    %typemap(jni) Gv::GvString "jstring"
    %typemap(jstype) Gv::GvString "String"
    %typemap(jstype) Gv::GvString const & "String"
    %typemap(jstype) Gv::GvString & "String"
    %typemap(javaout) Gv::GvString {
      GvString ret = new GvString( $jnicall, true);
      return ret.toString();
    }

    %typemap(javain
    ,pre=
    "     // GvString - String wrapper
         GvString tmp$javainput = new GvString( $javainput);"
    ,post=""
    ,pgcppname="tmp$javainput"
    ) Gv::GvString const & "$javaclassname.getCPtr( tmp$javainput)"

    %typemap(javain
    ,pre=
    "      // GvString - String wrapper
          GvString tmp$javainput = new GvString( $javainput);"
    ,post=
    "      $javainput = tmp$javainput.toString();"
    ,pgcppname="tmp$javainput"
    ) Gv::GvString & "$javaclassname.getCPtr( tmp$javainput)"

但重定向器不包装我的数据类型。文件 GvJNI.java 没有类型映射参数 GvString -> 字符串:

  public static void SwigDirector_ErrorHandler_OnError(ErrorHandler self, long wnd, long sReason) {
        self.OnError(new Window(wnd, false), new <b>GvString</b>(sReason, false));
      }

我的 C++ 代码如下所示:

namespace Gv
{
  class Window;
  class GvString;

  class GV_DECL ErrorHandler
  {
    public:
      ErrorHandler();
      virtual ~ErrorHandler();

      virtual void OnError( Window & wnd, GvString const & sReason) = 0;  /**< retrieve error - messages */
      virtual void OnFatal( Window & wnd, GvString const & sReason) = 0;  /**< retrieve fatal error - messages */
    private:
      ErrorHandler( ErrorHandler const & o);
      ErrorHandler & operator=( ErrorHandler const & o);

    protected:
    };
  }

有人知道如何将类型映射添加到 GvJNI.java 文件吗?

4

0 回答 0