python呼叫c動態庫方法練習

2021-08-14 01:57:59 字數 1026 閱讀 5762

練習1、python在不使用import

ctypes方式呼叫c語言動態庫的練習,

#include

#include

#include

#include

int sum(int a,int b)       #c語言實現的功能                   

pyobject* wrap_sum1(pyobject* self, pyobject* args)   #呼叫了c語言的sum函式

static pymethoddef examplemethods1 =

,  #這塊要注意下,「sum1」的名字是在python中呈現的方法名;

};void initexample1()  #這塊要注意下這個函式的命名就是init+py_initmodule第乙個引數名,如果不一致執行時會報錯;

**編寫完畢後,

第二步:進行編譯成功動態庫--

gcc -fpic example.c -o example1.so -shared  -i/usr/include/python2.7 -i/usr/lib/python2.7/config

第三步:開始試驗,注意要在動態庫所在目錄開啟pyhon

練習2:python使用import

ctypes方式呼叫c語言動態庫的練習,

第一步:c語言動態庫的製作,**如下:

#include

#include

#include

int sum(int a,int b)

第2步:編譯:gcc -fpic example2.c -o example2.so -shared

第3步:python開始呼叫動態庫的實踐:

>>> import ctypes

>>> loadso=ctypes.cdll.loadlibrary

>>> cfunc=loadso("./example2.so")

>>> cfunc.sum(8,9)

17   #-- 期望的結果

>>>

Python 呼叫 C 動態庫

呼叫c庫而不是c 庫 要注意平台位數對應 解釋型語言自上而下執行 函式類似標籤,縮排表示 塊 一行一條語句時可以不用分號 如何分配一段記憶體等 test python sample 輸入輸出 print hello end print python string input 請輸入 print 你輸...

python呼叫C語言動態庫

python完美相容c語言,有了ctypes 可以呼叫c相關 如果是c 編譯的時候加上 extern c 就可以了 如果是一些複雜型別比如結構體,類,聯合一些 可以考慮用boost.python exp.c include int add int a,int b 編譯生成動態庫add.so gcc ...

python呼叫c 動態庫(1)

由於專案中需要使用python語言搭建伺服器呼叫我的目標檢測演算法來實現功能,所以記錄一下自己除錯過程中的歷程,也做個mark。1.準備c 動態庫 ifndef cppde h define cppde h include cppde global.h include include include...