當前位置:首頁 » 編程語言 » pythonc語言擴展
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

pythonc語言擴展

發布時間: 2023-03-14 06:16:33

⑴ c可以調用python嗎

可以的。

C中內嵌Python
新建立一個工程,首先需要將工作目錄設置到Python-3.1.1PCbuild中,以獲取到動態庫,至於靜態庫的包含,Include目錄的指定,那自然也是少不了的。文件中需要包含Python.h文件,這也是必須的。
介面中
Py_Initialize();
Py_Finalize();

其他的根據需求,再引入相應的python builder 即可

⑵ python調用c語言編譯器

如何讓python調用C和C++代碼

安裝python後,會有一個chm格式的python手冊。要搞明白如何讓python調用C/C++代碼(也就是寫python的 extension),你需要征服手冊中的
<<Extending && embedding>>厚厚的一章。在昨天花了一個小時看地頭暈腦脹,仍然不知道如何寫python的extension後,查閱了一些其他 書籍,最終在<<Python Programming On Win32>>書中找到了教程。
下面記錄一下如何在visual studio 2005中,寫一段C/C++的MessageBox代碼,然後提供後python調用,最後的結果當然是顯示一個MessageBox.
1. 首先要明白的是,所謂的python擴展(也就是你提供給python的c/c++代碼,不一定是c/c++代碼,可以是其他語言寫的代碼)是一個 dll,並且這個dll放在本機python安裝目錄下的DLLs目錄下(譬如我機器上的路徑是:F:\Program Files\Python25\DLLs),假如我們接下來要寫的擴展mole名為mb,python調用的代碼為: import mb
mb.showMsg("Python's really amazing, I kindda love it!")
python怎麼找到我們的mb模塊呢?就是上面說的,我們要生成一個mb.dll,然後拷貝到Dlls目錄下面,為了區別普通的dll和python專用擴展的dll,我們的 mb.dll修改成mb.pyd(python dll)
2. 搭建環境,我們要使用python提供的c頭文件和lib庫來進行擴展的開發。 在vs 2005下點擊菜單 "工具"->"選項", 打開選項對話框,選擇"項目和解決方案->VC++目錄", 然後在右邊"顯示以下內容的目錄"得comboBox上選擇"包含文件」,添加python的include目錄(我的機器上是"F:\Program
Files\Python25\include"),然後選擇庫文件,添加python的libs目錄(我的機器上是"F:\Program Files\Python25\libs")。
既然擴展是一個dll,接下來我們要建立一個「動態鏈接庫」工程,然後開始寫代碼:
#include <python.h> //python.h是包含python一些定義的頭文件,在python的include目錄下 /*
我的python版本是2.5, 因為安裝python後它沒提供debug下的lib庫文件,因此你必須生成release版的dll,
想要生成dll版本的,你要到python官網上自己去下載python源代碼,當然你可以繼續生成release版本的dll,但dll中包含調試信息

⑶ python 可擴展主要體現

就算你的項目中有大量的Python代碼,你也依舊可以有條不紊地通過將其分離為多個文件或模塊加以組織管理。而且你可以從一個模塊中選取代碼,而從另一個模塊中讀取屬性。更棒的是,對於所有模塊,Python的訪問語法都是相同的。不管這個模塊是Python標准庫中的還是你一分鍾之前創造的,哪怕是你用其他語言寫的擴展都沒問題!藉助這些特點,你會感覺自己根據需要「擴展」了這門語言,而且你已經這么做了。
代碼中的瓶頸,可能是在性能分析中總排在前面的那些熱門或者一些特別強調性能的地方,可以作為Python擴展用C重寫。需要重申的是,這些介面和純Python模塊的介面是一模一樣的,乃至代碼和對象的訪問方法也是如出一轍的。唯一不同的是,這些代碼為性能帶來了顯著的提升。自然,這全部取決你的應用程序以及它對資源的需求情況。很多時候,使用編譯型代碼重寫程序的瓶頸部分絕對是益處多多的,因為它能明顯提升整體性能。
程序設計語言中的這種可擴展性使得工程師能夠靈活附加或定製工具,縮短開發周期。雖然像C、C++乃至Java等主流第三代語言(3GL)都擁有該特性,但是這么容易地使用C編寫擴展確實是Python的優勢。此外,還有像PyRex這樣的工具,允許C和Python混合編程,使編寫擴展更加輕而易舉,因為它會把所有的代碼都轉換成C語言代碼。
因為Python的標准實現是使用C語言完成的(也就是CPython),所以要使用C和C++編寫Python擴展。Python 的Java實現被稱作Jython,要使用Java編寫其擴展。最後,還有IronPython,這是針對.NET或Mono平台的C#實現。你可以使用C#或者VB.Net擴展IronPython.