HYPER MIKAN BOX
検索
最近の変更
メディアマネージャー
サイトマップ
文書の表示
以前のリビジョン
バックリンク
ログイン
トレース:
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== PythonからCの関数を呼び出す ====== 作成日: 2023-08-03 (木) [[https://youtu.be/wjUWODeNorI|第2回 Python/C APIに触れてみる]] ===== ソースコード ===== ==== setup.py ==== <file python> from setuptools import setup, Extension setup( name="toymath", ext_modules=[ Extension("toymath", ["toymathmodule.c"]), ] ) </file> ==== toymathmodule.c ==== <file c> #define PY_SSIZE_T_CLEAN #include <Python.h> // 利用したいCの関数 static int add(int a, int b) { return a + b; } // addをラップした関数 static PyObject *toymath_add(PyObject *self, PyObject *args) { int a, b; if (!PyArg_ParseTuple(args, "ii", &a, &b)) { return NULL; } int ret = add(a, b); return PyLong_FromLong(ret); } // 公開する関数の情報 static PyMethodDef toymath_methods[] = { {"add", toymath_add, METH_VARARGS, "Add integer values."}, {NULL, NULL, 0, NULL}, }; // モジュールの情報 static PyModuleDef toymath_module = { PyModuleDef_HEAD_INIT, "toymath", "Toy mathematic functions.", -1, toymath_methods }; // モジュールの初期化 // impoortされたときに呼び出される // PyInit_xxxのxxxの部分は、モジュール名と一致させる PyMODINIT_FUNC PyInit_toymath(void) { return PyModule_Create(&toymath_module); } </file>
文書の先頭へ