我声明了一些类型映射:
#
# 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 文件吗?