<参考サイト>https://blanktar.jp/blog/2013/05/use-python-by-c-lang.html
c
1#include <stdio.h> 2#include <Python.h> 3 4int main(void) 5{ 6 PyObject *pModule, *pTmp; 7 char *sTmp; 8 9 Py_Initialize(); 10 11 /* モジュールをimport */ 12 pModule = PyImport_ImportModule("python3 c.py"); 13 14 /* pythonで言う pTmp = getattr(pModule, 'func')() みたいな。 */ 15 pTmp = PyObject_CallMethod(pModule, "func", NULL); 16 17 /* PyObjectをC言語の型に変換 */ 18 PyArg_Parse(pTmp, "s", &sTmp); 19 20 printf("%s\n", sTmp); 21 22 Py_Finalize(); 23 return 0; 24}
python
1def func(): 2 print("this printed by python") 3 return ("byt, this printed by C")
gcc -fPIC python_c.c $(python3-config --cflags --ldflags)
を行い、実行ファイルa.outが作成されました
その後
./a.out
で実行した結果
□の中に
00
01
というものだけが出力されました
エラーはでていません
ldd a.outの結果
linux-vdso.so.1 => (0x00007ffef4ff2000)
libpython3.5m.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0 (0x00007f2fe52e8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2fe4f1e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2fe4d01000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f2fe4ad8000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f2fe48be000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2fe46ba000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f2fe44b7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2fe41ae000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2fe596f000)
開発環境は
ubuntu16.04
アドバイスいただけると幸いです
回答1件
あなたの回答
tips
プレビュー