#SWIGインストール
Archlinuxの場合
sudo pacman -S swig
#ビルド
###ラッパーファイル生成
OpenCVをインクルードしてるmylib.h
に対してmylib.i
を用意
<string>
など標準ライブラリをインクルードしてるならその対応の.iも入れておく (string-arguments-are-not-recognized-by-swig)
%module mylib
// Make mylib_wrap.cxx include this header:
%{
#include "mylib.h"
%}
%include <std_string.i>
%include "mylib.h"
.iをコンパイルして
swig -c++ -python mylib.i
mylib_wrap.cxx
,mylib.py
が生成される
###コンパイルとリンク
生成された.cxxファイルをコンパイルして Python と Opencv をリンクする
mylib.py
はimport _mylib
でネイティブを呼び出すのでオブジェクトファイルの名前は _mylib.so
にする
g++ -shared -fPIC -L. mylib_wrap.cxx -o _mylib.so `pkg-config --libs --cflags python3` `pkg-config --libs --cflags opencv4`
試しにpythonで呼び出す
import mylib
a=mylib.SomeClass()