如何在python中調用C語言中的函數

今天在工作中遇到一個問題;
我需要在Python腳本中調用一個Cpp語言函數,這個Cpp語言函數屬於外部模塊的函數。
具體環境:
OS: Linux Fedora 26
python: python2.7
接下來我要開始調查這個問題,調查清楚之後,我將會更新到這裏來:
[2018-03-01 update]
        C語言函數接收的輸入是一個結構體,這樣的話,就需要Python將數據以Dictionary的形式傳進來。
這樣的話,昨天調查的函數PyArg_ParseTuple已經不能滿足需要了。這時可以將接收輸入的函數變更爲PyArg_ParseTupleAndKeywords()。
        同時,還有一個問題,在編譯時有如下一個編譯錯誤:fatal error: Python.h: No such file or directory
該問題的解決方法:安裝python-dev package或者python34-dev package。
[2018-02-28 update]
在python中調用C語言的API,需要有如下三部分內容;
1. 導出函數:
       所謂導出函數,就是適配函數,在此函數中有如下幾件事情需要完成
  • 將python輸入轉換成C語言輸入:PyArg_ParseTuple
  • 給被適配函數配參,並調用
  • 將被調用函數的輸出,轉換成python對象輸出:Py_BuildValue
2. 方法列表

列出所有可以被python解釋器使用的函數列表,包括四項內容:

  • 方法名:python解釋器調用時的名字
  • 導出函數:上面第一部分實現的函數
  • 參數傳遞方式:METH_VARARGS:元組;METH_KEYWORDS:字典
  • 方法描述:屬於對該函數的說明內容。
3.初始化函數
每個python擴展模塊,都要有初始化函數,以便python解釋器能夠對其正確的初始化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章