python怎么封装方法然后调用_我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?...
展開全部
可以的,只要把python模塊轉(zhuǎn)換成2113dll模塊,利用5261Python自帶的ctypes模塊加載調(diào)用就行。4102
ctypes 是Python的外部函數(shù)庫。它提供了與1653 C語言兼容的數(shù)據(jù)類型,并允許調(diào)用 DLL 或共享庫中的函數(shù)。可使用該模塊以純 Python 形式對(duì)這些庫進(jìn)行封裝。
ctypes導(dǎo)出了cdll對(duì)象,在 Windows 系統(tǒng)中還導(dǎo)出了windll和oledll對(duì)象用于載入動(dòng)態(tài)鏈接庫。通過操作這些對(duì)象的屬性,你可以載入外部的動(dòng)態(tài)鏈接庫。cdll載入按標(biāo)準(zhǔn)的cdecl調(diào)用協(xié)議導(dǎo)出的函數(shù),而windll導(dǎo)入的庫按stdcall調(diào)用協(xié)議調(diào)用其中的函數(shù)。
擴(kuò)展資料:
加載調(diào)用DLL的相關(guān)方法:
1、加載DLL
加載的時(shí)候要根據(jù)你將要調(diào)用的函數(shù)是符合什么調(diào)用約定的。
stdcall調(diào)用約定:兩種加載方式
Objdll = ctypes.windll.LoadLibrary("dllpath")
Objdll = ctypes.WinDLL("dllpath")
cdecl調(diào)用約定:也有兩種加載方式
Objdll = ctypes.cdll.LoadLibrary("dllpath")
Objdll = ctypes.CDLL("dllpath")
其實(shí)windll和cdll分別是WinDLL類和CDll類的對(duì)象。
2、調(diào)用dll中的方法
加載dll的時(shí)候會(huì)返回一個(gè)DLL對(duì)象(假設(shè)名字叫Objdll),利用該對(duì)象就可以調(diào)用dll中的方法。 e.g.如果dll中有個(gè)方法名字叫Add(注意如果經(jīng)過stdcall聲明的方法,如果不是用def文件聲明的導(dǎo)出函數(shù)或者extern “C” 聲明的話,編譯器會(huì)對(duì)函數(shù)名進(jìn)行修改,這個(gè)要注意。)
調(diào)用:nRet = Objdll.Add(12, 15) 即完成一次調(diào)用。
總結(jié)
以上是生活随笔為你收集整理的python怎么封装方法然后调用_我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于python的语料库数据处理电子版_
- 下一篇: spring cloud config动