如何重命名SWIG自动生成的SWIGTYPE_p_MNN__Session类?
解决SWIG生成Java代码时重命名指针包装类的问题
针对你遇到的SWIG自动生成SWIGTYPE_p_MNN__Session类、想要重命名为Session_p的需求,可通过以下方法解决:
使用
%typemap(javaclassname)指定指针类型的Java类名
在SWIG接口文件中添加以下代码,直接映射目标指针类型的Java包装类名称:%typemap(javaclassname) MNN::Session*, const MNN::Session* "Session_p"若
Session不在命名空间下,可简化为:%typemap(javaclassname) Session*, const Session* "Session_p"说明之前
%rename无效的原因SWIGTYPE_p_xxx是SWIG处理未显式声明的指针类型时自动生成的占位类,%rename需要在该类生成前触发才能生效,而%typemap(javaclassname)是直接针对指针类型的Java类名映射规则,优先级更高,能覆盖默认的命名逻辑。验证修改效果
添加上述代码后重新运行SWIG生成Java代码,此时Interpreter.createSession的返回值会变为Session_p,对应的包装类也会使用该名称。
内容的提问来源于stack exchange,提问作者TTTuna
相关产品推荐
相关产品推荐

