youtube:python-mixing-004
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
youtube:python-mixing-004 [2024/02/28 18:26] – 削除 - 外部編集 (不明な日付) 127.0.0.1 | youtube:python-mixing-004 [2024/02/28 18:26] (現在) – ↷ toybox:python-mixing-004 から youtube:python-mixing-004 へページを移動しました。 freemikan | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== CからPythonのコードを実行する ====== | ||
+ | 作成日: 2023-08-05 (土) | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ===== ソースコード ===== | ||
+ | |||
+ | ==== toymath.py ==== | ||
+ | |||
+ | <file python> | ||
+ | def add(a, b): | ||
+ | return a + b | ||
+ | |||
+ | def sub(a, b): | ||
+ | return a - b | ||
+ | </ | ||
+ | |||
+ | ==== test_toymath.py ==== | ||
+ | |||
+ | <file python> | ||
+ | import toymath | ||
+ | |||
+ | x = toymath.add(1, | ||
+ | y = toymath.sub(1, | ||
+ | x = x + y | ||
+ | |||
+ | print(x, y) | ||
+ | </ | ||
+ | |||
+ | ==== myapp.c ==== | ||
+ | |||
+ | <file c> | ||
+ | #define PY_SSIZE_T_CLEAN | ||
+ | #include < | ||
+ | |||
+ | int main() { | ||
+ | Py_Initialize(); | ||
+ | |||
+ | PyRun_SimpleString(" | ||
+ | " | ||
+ | |||
+ | FILE *fp = fopen(" | ||
+ | if (fp == NULL) { | ||
+ | fprintf(stderr, | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | PyRun_SimpleFile(fp, | ||
+ | |||
+ | fclose(fp); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Makefile ==== | ||
+ | |||
+ | <file makefile> | ||
+ | .PHONY: all | ||
+ | all: myapp | ||
+ | |||
+ | myapp: myapp.o | ||
+ | gcc `python3-config --ldflags --embed` -o $@ $^ | ||
+ | |||
+ | myapp.o: myapp.c | ||
+ | gcc -c `python3-config --cflags` -o $@ $< | ||
+ | </ |