如何在python中引用c c 函式

2021-10-05 16:44:35 字數 1409 閱讀 7624

由於python效能問題的原因,在實際專案中往往會在python中去呼叫c的一些方法,本文將介紹在centos8下面python去呼叫c的方法。

c的示例**如下:

#include

#include

#include

#include

typedef

struct

node;

intadd

(node node)

void

display()

然後將這個c檔案編譯成動態鏈結庫

gcc -o libpycall.so -shared -fpic python_call_c.c

# 動態鏈結庫名稱需要以lib開頭,在這裡libpycall.so就是我們編譯成的so庫

接下來我們就可以在python中去引用c中的這兩個方法了

python提供的ctypes庫來引用這些方法。

我們可以先看下簡單的呼叫,先只呼叫display方法,python**如下:

那麼如果我們想傳乙個結構體引數該怎麼辦呢?ctypes庫也為我們提供了資料型別對映表

類必須繼承自 ctypes.structure,每個子類必須定義乙個_fields_屬性,示例**如下:

import ctypes

from ctypes import

*load = ctypes.cdll.loadlibrary

obj = load(

"./libpycall.so"

)

obj.display();

class

add(structure)

: _fields_ =[(

'a', c_int),(

'b', c_int)

]_add = add(1,

10)res = obj.add(_add)

print

(res)

結果如下圖所示:

如何在Python中引用zookeeper的py庫

這位老哥在部落格中清楚的描述了應該如何操作,但是我需要在他的基礎之上簡化一下安裝,當你安裝完c語言的執行命令的時候就可以結束後續的步驟了,後面可以按照我的方法繼續配置 到了上面這一步就可以了,下面開始通過之前安裝的anaconda來幫你做後續的工作 為了便於操作,和簡化安裝流程,請先在系統中安裝an...

如何在jsp中引用標籤庫

如果你使用的是符合jsp 1.2 servlet 2.3 的容器,比如tomcat 4.x 或者更高,你就可以在jsp頁面的taglib指令中使用絕對路徑而不必在web.xml中指定taglib元素。對於早於servlet 2.3 規範的情況,你仍然需要在web.xml中宣告所有你所使用的jsp 標...

如何在網頁中引用CSS

如何在網頁中引用css?2006 11 21 17 42 如何在網頁中引用css?初學css的一般都對如何在網頁中使用css感到特別困惑,在這裡我把常用的方法介紹給大家,以解大家心頭之惑 1 使用embed 嵌入樣式單 排版樣式 即將css 直接插入每個頁面的html的 說明 css檔案的路徑用絕對...