python打包成庫文件 python有沒有辦法能夠編譯成DLL文件?
python有沒有辦法能夠編譯成DLL文件?一般來說,沒有好的方法將Python編譯成DLL,因?yàn)镻ython是一種解釋性語言,而DLL是一個(gè)編譯過的二進(jìn)制文件,它不在同一個(gè)維度中。除非將Python
python有沒有辦法能夠編譯成DLL文件?
一般來說,沒有好的方法將Python編譯成DLL,因?yàn)镻ython是一種解釋性語言,而DLL是一個(gè)編譯過的二進(jìn)制文件,它不在同一個(gè)維度中。除非將Python解釋器打包到項(xiàng)目中并在exe中調(diào)用它。但在某些特殊情況下,有一種方法可以將Python代碼編譯成DLL文件。在。Net環(huán)境下,可以使用ironpython將Python代碼編譯成DLL。
python有沒有辦法能夠編譯成DLL文件?
1. 有兩個(gè)。無法打包問題,幾乎可以肯定不是因?yàn)镻Y源代碼模塊沒有鍵入,而是因?yàn)樗腃擴(kuò)展名或綁定DLL沒有鍵入。目前,還沒有一種東西能夠提供與Cpython相同的C擴(kuò)展接口,并自動(dòng)處理這些DLL依賴關(guān)系。換句話說,你可以用pyinstaller打包的東西也可以用其他東西打包/編譯;否則,它不是很好,在很多情況下是不可行的。因此,正確的姿態(tài)是仔細(xì)查看各種打包工具的文檔,當(dāng)打包中存在依賴項(xiàng)時(shí),將這些依賴項(xiàng)寫入打包配置文件。當(dāng)然,更方便的方法是帶上站點(diǎn)的DLL和解釋器,然后用C/C編寫一個(gè)shell,比如sublime。
既然Python是用C實(shí)現(xiàn)的,那為什么Python不能直接生成exe呢?
C語言實(shí)際上是一種“老”和“底層”語言。其執(zhí)行效率僅次于匯編語言。
它之所以古老是因?yàn)镃語言出現(xiàn)得很早。
盡管FORTRAN和COBOL比C語言出現(xiàn)得早,但現(xiàn)代主流操作系統(tǒng)(windows、Mac OS、Linux、IOS、Android、Unix)都是從C語言中誕生的。
最根本的原因是C語言被設(shè)計(jì)用來同時(shí)編寫匯編語言。從理論上講,它可以用外匯來表示。匯編語言是最有效的語言。
所以Python是用C語言編寫的也就不足為奇了。它與能否生成exe無關(guān)。
Exe文件是Windows平臺(tái)的專用格式。最簡(jiǎn)單的exe是com可執(zhí)行文件。EXE文件實(shí)際上由引導(dǎo)加載程序和解釋器組成。
由Python語言生成的代碼只能通過引導(dǎo)加載程序和解釋器作為EXE文件執(zhí)行。
因此Python生成EXE文件并不困難。只是它是否愿意提供的問題。
如何利用python調(diào)用編譯好的dll庫?
這并不難。它主要使用Python的ctypes模塊。接下來,我將簡(jiǎn)要介紹一下實(shí)現(xiàn)過程。實(shí)驗(yàn)環(huán)境是win10python3.6pycharm5.0,主要內(nèi)容如下:
1。在這里為了方便解釋問題,我編譯了一個(gè)簡(jiǎn)單的DLL庫,源代碼如下,非常簡(jiǎn)單,一個(gè)帶參數(shù)的mul函數(shù):
編譯成功后,將在當(dāng)前發(fā)行目錄下生成一個(gè)DLLdllTest.dll接下來,我們創(chuàng)建一個(gè)新的py文件,它的主要代碼如下,非常簡(jiǎn)單簡(jiǎn)單:
程序運(yùn)行截圖如下,已成功調(diào)用add函數(shù),并返回執(zhí)行結(jié)果:
3。在這里我們還可以使用windll來加載DLL庫,基本步驟都是一樣的,只需直接調(diào)用,如下所示:
程序運(yùn)行截圖如下:
到目前為止,我們已經(jīng)完成了使用Python調(diào)用DLL庫。一般來說,整個(gè)過程很簡(jiǎn)單,代碼量不多,很容易理解,cdll和WINDL這兩種方式都可以很快完成,只要你熟悉相關(guān)的代碼和例子,練習(xí)幾次,你很快就能掌握,網(wǎng)上還有相關(guān)的教程和資料,如果您感興趣,可以搜索,希望以上分享的內(nèi)容能對(duì)您有所幫助,也歡迎大家發(fā)表評(píng)論和留言。
C 程序,我只給別人生成了exe,但是里面有一個(gè)函數(shù)是需要?jiǎng)e人自己寫的,如何做這個(gè)接口呢?
作為一名程序員,我認(rèn)為你不適合當(dāng)程序員。
1、如果你問這樣一個(gè)問題,你可以斷定你甚至沒有讀過一本三四百頁的基本C編程語言書。沒有耐心你不能做技術(shù)工作。
2、要知道這樣一個(gè)問題,在網(wǎng)上隨機(jī)搜索可以找到很多別人總結(jié)出來的解決方案。在這里提問就是等待別人給你一個(gè)解決方案。這說明做事缺乏主動(dòng)性,對(duì)心理依賴嚴(yán)重。這樣的人只適合當(dāng)領(lǐng)導(dǎo)
!建議不要從事技術(shù)工作,尤其是軟件開發(fā)。真正的程序員必須熬夜為你填補(bǔ)漏洞。積德改行。謝謝你身邊的程序員!