小结两种在Python中导入C语言扩展库的方法
小結兩種在Python中導入C語言擴展庫的方法
分類:?Pythoner2009-08-18 20:44?2563人閱讀?評論(1)?收藏?舉報 python擴展c語言importstring一種是Python文檔的推薦方案,采用C API擴展寫法:
在D:建一個add.c文件,輸入
[cpp]?view plaincopy?
然后在D:盤建立setup.py
[python]?view plaincopy?
將cmd切換到D:
輸入setup.py build --compiler=mingw32 -verbose
這里我選擇了mingw32,否則在我的機器上它會用msvc,而這會有一些小錯誤
運行成功后會在(當前目錄的)D:/build/lib.win32-2.6下生成add.pyd。
?
下面就在Python中導入
>>> import sys
>>> sys.path.append("D:/build/lib.win32-2.6")
>>> import add
>>> add.add(3,2)
5
?
Bingo!
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
?
以上是用C API的擴展方式,它的寫法比較麻煩。以下用ctypes直接導入dll模塊。
?
如果是在Windows下面:
首先在D:建立文件spam.c
[cpp]?view plaincopy?
我用cl來編譯它,現在我漸漸喜歡上了用cl來編譯,省得建一個好幾兆的項目,而且參數可以靈活選擇。后面我會繼續學習如何寫make file。
在cmd輸入cl -I"d:/programs/python26/include" spam.cpp,會生成spam.obj。
再輸入link spam.obj /DLL /libpath:"d:/programs/python26/libs",生成spam.dll。
?
下面到python中導入:
>>> import ctypes
>>> cdll=ctypes.cdll.LoadLibrary('d:/spam.dll')
>>> cdll.multiply(2,3)
6
?
如果是在Linux下面:
在/home/Henry下建立spam.c
[cpp]?view plaincopy編譯:$ gcc -o libspam.so -fpic -shared spam.c
進入Python:
[python]?view plaincopy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
?
但是ctypes對C++的DLL導入不行。對于C++庫的導入還是要借助于Boost.python。
我一定會回來的!
- 上一篇練練手,練練手——C語言用遞歸對鏈表逆序
- 下一篇導出與導入C++ DLL小記
總結
以上是生活随笔為你收集整理的小结两种在Python中导入C语言扩展库的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科研分享|一个论文关系网络可视化网站
- 下一篇: 制作Python的安装模块