python呼叫C語言動態庫
阿新 • • 發佈:2019-01-12
python完美相容C語言,有了ctypes 可以呼叫c相關程式碼
如果是c++程式碼 編譯的時候加上 extern "C" 就可以了 ,如果是一些複雜型別比如結構體,類,聯合一些 可以考慮用boost.python
exp.c
#include <stdio.h>
int add(int a, int b)
{
return ((a) + (b));
}
編譯生成動態庫add.so
gcc -c -fpic exp.c
gcc -shared exp.o -o add.so
add_c.py
#!/usr/bin/python from ctypes import * import os #載入C動態庫 c_scan = cdll.LoadLibrary('./add.so') c_scan.add.restype = c_int #函式的返回值型別int c_scan.add.argtypes = (c_int, c_int) #入參型別 #兩個入參256和112 c_int_a = c_int(256) c_int_b = c_int(112) #設定返回值變數的型別 return_value = c_int() #入參最後得出結果儲存在return_value裡面 return_value = c_scan.add(c_int_a, c_int_b) print(return_value)
#執行
python add_c.py
結果:
368