Python如何調用C語言程序?


這裡介紹一種簡單的方式—編譯為dll或so動態庫,然後再使用ctypes模塊調用就行,下面我簡單介紹一下實現過程,主要內容如下:

編譯為dll

這種方式主要應用在Windows平臺下,將C語言程序編譯為一個dll動態庫,然後直接使用ctypes模塊加載使用就行,測試過程如下:

1.為了更好的說明問題,這裡我利用VS2017編譯了一個dll文件,源C代碼如下,非常簡單,一個相乘函數:

2.編譯完成後,我們在同級目錄下新建一個py文件,直接使用ctpyes模塊加載剛才編譯好的dll文件就行,如下,非常簡單:

點擊運行這個程序,已經成功調用C函數,並返回執行的結果,如下:

編譯為so

這種方式主要應用在Linux環境下,基本過程和Windows平臺下差不多,也是先編譯為so動態庫文件,然後再使用ctypes模塊加載使用就行,測試過程如下:

1.測試C程序如下,兩個簡單的函數,一個相加一個相乘,接著使用gcc命令將這個C文件編譯為so文件,編譯命令“gcc -shared -Wl,-soname,test -o test.so -fPIC test.c”:

2.編譯完成後,在同級目錄下也新建一個py文件,也直接使用ctypes模塊加載so文件使用就行,代碼幾乎不變,如下:

直接運行這個程序,效果如下,已經成功調用C函數:

至此,我們完成了利用Python調用C語言程序。總的來說,整個過程非常簡單,只要你熟悉一下上面的步驟,很快就能掌握的,網上也有相關教程和資料可供參考,非常詳細也非常豐富,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言。


小小猿愛嘻嘻


我本人沒做過完整的,但是在項目中見到過調用。cpp程序寫好後,必然有一個main函數在,或者你就寫一個main.cc,把main函數放在這個文件裡。編譯好後,把編譯後的程序放在Python程序根目錄的某個文件夾內(其實隨便放哪兒,不過為了方便),然後在Python文件中就可以直接導入項目名,也就是c程序的名字,然後就能用了,不過這是直接從main函數入口調用,如何調用其他的函數,這個我沒用過,不過應該大同小異吧。


new-小組會


如果調用 shell

通過exec dos當式,或者 shell 或者中斷都可以的

都可以的。

也可以編譯成 動態庫 或者so.


分享到:


相關文章: