Python呼叫C語言的實現

2022-10-03 22:00:23 字數 1673 閱讀 6996

python中的ctypes模組可能是python呼叫c方法中最簡單的一種。ctypes模組提供了和c語言相容的資料型別和函式來載入dll檔案,因此在呼叫時不需對原始檔做任何的修改。也正是如此奠定了這種方法的簡單性。

示例如下

實現兩數求和的c**,儲存為add.c

//sample c file to add 2 numbers - int and floats

#include

int add_int(int, int);

float add_float(float, float);

int awww.cppcns.comdd_int(int num1, int num2)

float add_float(float num1, float num2)

接下來將c檔案編譯為.so檔案(windows下為dll)。下面操作會生成adder.so檔案

#for linux

$ gcc -shared -wl,-soname,adder -o adpeijuemoider.so -fpic add.c

#for mac

$ gcc -shared -wl,-install_name,adder.so -o adder.so -fpic add.c

#for windows

$gcc -shared -wl,-soname,adder -o adder.dll -fpic add.c

現在在你的python**中來呼叫它

from ctypes import *

#load the shared object file

adder = cdll('./adder.so')

#find sum of integers

res_int = adder.add_int(4,5)

print "sum of 4 and 5 = " + str(res_int)

#find sum of floats

a = c_float(5.5)

b = c_float(4.1)

add_float = adder.add_float

add_float.restype = c_float

print "sum of 5.5 and 4.1 = ", str(add_float(a, b))

輸出如下

sum of 4 and 5 = 9

sum of 5.5 and 4.1 =  9.60000038147

在這個例子中,c檔案是自解釋的,它包含兩個函式,分別實現了整形求和和浮點型求和。

在python檔案中,一開始先導入c程式設計客棧types模組,然後使用cdll函式來載入我們建立的庫檔案。這樣我們就可以通過變數adder來使用c類庫中的函式了。當adder.add_int()被呼叫時,內部將發起乙個對c函式add_int的呼叫。ctypes介面允許我們在呼叫c函式時使用原生python中預設的字串型和整型。

而對於其他類似布林型和浮點型這樣的型別,必須要使用正確的ctype型別才可以。如向adder.add_float()函式傳參時, 我們要先將python中的十進位制值轉化為c_float型別,然後才能傳送給c函式。這種方法雖然簡單,清晰,但是卻很受限。例如,並不能在c中對物件進行操作。

本文標題: python呼叫c語言的實現

本文位址: /jiaoben/python/266870.html

C 呼叫Python語言

是一種在 net和 mono 上實現的 python 語言 2.開啟vs,新增兩個引用,在ironpython的安裝根目錄下面選擇ironpython.dll和microsoft.scripting.dll using microsoft.scripting.hosting using ironpy...

Python呼叫C語言

python中的ctypes模組可能是python呼叫c方法中最簡單的一種。ctypes模組提供了和c語言相容的資料型別和函式來載入dll檔案,因此在呼叫時不需對原始檔做任何的修改。也正是如此奠定了這種方法的簡單性。示例如下 實現兩數求和的c 儲存為add.c sample c file to ad...

Python對C 語言的呼叫

最近在做乙個專案,由於專案中的某些模組是用到c語言編寫好,要用python編寫指令碼,該例子已在ubuntu上實驗,並實驗成功。首先我們在 home ccode編寫乙個example.c檔案,例如 int test int n1,int n2 然後我們開啟終端,進入目錄中用gcc編譯該檔案 gcc ...