MacではSWIGを使用してPythonでCのピットレコードを呼び出す
Mac上SWIG踏み込み記録
インストール
brew/anaconda/ソースコードをダウンロードして自分でコンパイルするなどの方法があります.このチュートリアルには、各プラットフォームに対する詳細なインストール手順があります.Mac運転
例
サボって、直接使う公式文書の例は、呼び出す必要があるC言語コードを と仮定する.次に、SWIGが認識できるインタフェースファイルを書く: 構築PythonモジュールUnixシステム下入力: 第3ステップの代替案をMacでコンパイルする際、Python環境などの問題で参照するヘッダファイルが見つからず、コマンド入力が面倒になるので、ここではこの回答c-Pythonを参照する.h not found using swig and Anaconda Python-Stack Overflowはdistutilsを用いて生成する.
まずsetupを作成します.pyファイル、例は次のとおりです.
そしてコマンド
Over.
ブログやリソース SWIGを利用してC++ライブラリをPythonパッケージ-個人記事-SegmentFault思否の良い例(翻訳された公式ドキュメント233に似ている)ですが、SWIGはC++のサブセット しかサポートしていません. SWIGでPythonにC++里STLの容器・零壹軒・ノート を提供 SWIGを使用してPython呼び出しC/C++コード|ホワイトコード羊堂を実現するこれは主にCに対して、例は比較的に細かく、全体の流れははっきりしている SWIGはC/C++のAPIに対してPython呼び出しインタフェースを生成する基礎|WalkerTalkingの非常に詳細な例であり、SWIGの原理についても説明し、著者らはC++とSWIGの結合について多くの試みを行い、参考にすることができる. c - Python.h not found using swig and Anaconda Python-Stack Overflow MacでのSWIG使用に関するコマンドを詳しく紹介しましたが、この回答者は天使です! SWIGコンパイルオプションpython-How may I override the compiler(gcc)flags that setupを設定.py uses by default? - Stack Overflow clangではなくgccを使う場合は端末にCC=gcc-8 と入力.
インストール
brew/anaconda/ソースコードをダウンロードして自分でコンパイルするなどの方法があります.このチュートリアルには、各プラットフォームに対する詳細なインストール手順があります.Mac運転
brew install swig
でOK例
サボって、直接使う公式文書の例
/* File : example.c */
#include
double My_variable = 3.0;
int fact(int n) {
if (n <= 1) return 1;
else return n*fact(n-1);
}
int my_mod(int x, int y) {
return (x%y);
}
char *get_time()
{
time_t ltime;
time(<ime);
return ctime(<ime);
}
/* example.i */
%module example
%{
/* Put header files here or function declarations like below */
extern double My_variable;
extern int fact(int n);
extern int my_mod(int x, int y);
extern char *get_time();
%}
extern double My_variable;
extern int fact(int n);
extern int my_mod(int x, int y);
extern char *get_time();
swig -python example.i
gcc -c example.c example_wrap.c \
-I/usr/local/include/python2.7
ld -shared example.o example_wrap.o -o _example.so
まずsetupを作成します.pyファイル、例は次のとおりです.
# setup.py
from distutils.core import setup, Extension
example_module = Extension('_example', sources=['example_wrap.c', 'example.c'])
setup(name='example', ext_modules=[example_module], py_modules=["example"])
そしてコマンド
python setup.py build_ext --inplace
を用いるコンパイルすればよい.あとは楽しくimport exampleできます!Over.
ブログやリソース