Ⅰ. はじめに
タイトルの通り「Pythonでダイナミックリンクライブラリを利用する方法」です。
Ⅱ. やり方
1. ダイナミックリンクライブラリを作成する
mylib.c
#include <stdio.h> int hello() { printf("hello world\n"); return 123; }
gcc -shared -fPIC -o libmylib.so mylib.c
2. Pythonから呼び出す
test.py
import ctypes lib = ctypes.cdll.LoadLibrary('./libmylib.so') x = lib.hello() print(x)
実行結果
$ python test.py hello world 123
Ⅲ. 関数名に記号が入っている場合について
エクスポートされた関数名に$などの記号が含まれている場合があります。
$ nm -D libgk.so ... 000092e0 T aaagg$b
そのような場合pythonから呼び出すには以下のように行います。
import ctypes lib = ctypes.cdll.LoadLibrary('./libgk.so') func = getattr(lib, 'aaagg$b') func()