SWIG 生成的名称太长
SWIG generated names too long
我正在用 SWIG 包装一些 C++ 代码以生成 java 代码。我有这个 typedef
typedef void (*create_cb_t)(const rib_handle_t rib,
const cdap_rib::con_handle_t &con,
const std::string& fqn,
const std::string& class_,
const cdap_rib::filt_info_t &filt,
const int invoke_id,
const ser_obj_t &obj_req,
ser_obj_t &obj_reply,
cdap_rib::res_info_t& res);
稍后在成员函数中使用
void addCreateCallbackSchema(const cdap_rib::vers_info_t& version,
const std::string& class_,
const std::string& fqn_,
create_cb_t cb);
SWIG 生成类型时文件名太长,使用时报错
Unable to open file ../../../java/eu/irati/librina/SWIGTYPE_p_f_q_const__long_long_r_q_const__rina__cdap_rib__connection_handler_r_q_const__std__string_r_q_const__std__string_r_q_const__rina__cdap_rib__filtering_info_q_const__int_r_q_const__rina__ser_obj_r_rina__ser_obj_r_rina__cdap_rib__result_info__void.java: File name too long
如何用避免此问题的名称替换(我想重命名)typedef?
谢谢
这个问题的解决方案是在接口文件中创建一个特定的 typedef(尊重命名空间):
namespace rina {
namespace rib{
typedef void (*create_cb_t)(const rib_handle_t rib,
const cdap_rib::con_handle_t &con,
const std::string& fqn,
const std::string& class_,
const cdap_rib::filt_info_t &filt,
const int invoke_id,
const ser_obj_t &obj_req,
ser_obj_t &obj_reply,
cdap_rib::res_info_t& res);
}}
然后忽略.h中的typedef
#ifndef SWIG
typedef void (*create_cb_t)(const rib_handle_t rib,
const cdap_rib::con_handle_t &con,
const std::string& fqn,
const std::string& class_,
const cdap_rib::filt_info_t &filt,
const int invoke_id,
const ser_obj_t &obj_req,
ser_obj_t &obj_reply,
cdap_rib::res_info_t& res);
#endif
我正在用 SWIG 包装一些 C++ 代码以生成 java 代码。我有这个 typedef
typedef void (*create_cb_t)(const rib_handle_t rib,
const cdap_rib::con_handle_t &con,
const std::string& fqn,
const std::string& class_,
const cdap_rib::filt_info_t &filt,
const int invoke_id,
const ser_obj_t &obj_req,
ser_obj_t &obj_reply,
cdap_rib::res_info_t& res);
稍后在成员函数中使用
void addCreateCallbackSchema(const cdap_rib::vers_info_t& version,
const std::string& class_,
const std::string& fqn_,
create_cb_t cb);
SWIG 生成类型时文件名太长,使用时报错
Unable to open file ../../../java/eu/irati/librina/SWIGTYPE_p_f_q_const__long_long_r_q_const__rina__cdap_rib__connection_handler_r_q_const__std__string_r_q_const__std__string_r_q_const__rina__cdap_rib__filtering_info_q_const__int_r_q_const__rina__ser_obj_r_rina__ser_obj_r_rina__cdap_rib__result_info__void.java: File name too long
如何用避免此问题的名称替换(我想重命名)typedef?
谢谢
这个问题的解决方案是在接口文件中创建一个特定的 typedef(尊重命名空间):
namespace rina {
namespace rib{
typedef void (*create_cb_t)(const rib_handle_t rib,
const cdap_rib::con_handle_t &con,
const std::string& fqn,
const std::string& class_,
const cdap_rib::filt_info_t &filt,
const int invoke_id,
const ser_obj_t &obj_req,
ser_obj_t &obj_reply,
cdap_rib::res_info_t& res);
}}
然后忽略.h中的typedef
#ifndef SWIG
typedef void (*create_cb_t)(const rib_handle_t rib,
const cdap_rib::con_handle_t &con,
const std::string& fqn,
const std::string& class_,
const cdap_rib::filt_info_t &filt,
const int invoke_id,
const ser_obj_t &obj_req,
ser_obj_t &obj_reply,
cdap_rib::res_info_t& res);
#endif