SWIG使用遇到的问题

SWIG (Simplified Wrapper and Interface Generator)是一个连接C和C++编写的程序和其他脚本语言的接口编译器,如Perl、Python、Ruby和Tcl等脚本语言。编写好的C和C++程序可以通过SWIG编译成其他语言的接口。这里记录使用SWIG将C++代码转为python接口遇到的一些问题。

问题1 C++函数接口中bool & a类型

  • 问题描述

C++函数接口中需要传入bool类型的引用,如果SWIG直接打包后,在python脚本下会提示输入参数类型不匹配。例如:
test.h里面有个接口使用了bool & a作为参数.

  • 解决办法
    在SWIG的.i文件中添加如下代码
%apply bool & OUTPUT { bool & a };
#include "test.h"
%clear bool & a;

python调用的时候输出值在原来的基础上多出一个bool类型的a值。

参数作为输入输出可参考Swig Arguments

问题2 C++函数接口中智能指针类型std::shared_ptr<core::Mat> & matrix

  • 解决方法
    在SWIG的.i文件中添加如下代码
%include <std_shared_ptr.i>

%shared_ptr(core::Mat)

python调用时直接传core::Mat类型即可.

posted @ 2021-08-02 19:06  半夜打老虎  阅读(287)  评论(0编辑  收藏  举报