Python運(yùn)行DLL文件的方法
什么是DLL文件?
DLL文件為動態(tài)鏈接庫(英語: Dynamic-link library, 縮寫為DLL)
它是微軟公司在微軟視窗操作系統(tǒng)中實現(xiàn)共享函數(shù)庫概念的一種實現(xiàn)方式
先來闡述一下DLL(Dynamic Linkable Library)的概念,你可以簡單的把DLL看成一種倉庫,它提供給你一些可以直接拿來用的變量、函數(shù)或類。在倉庫的發(fā)展史上經(jīng)歷了“無庫-靜態(tài)鏈接庫-動態(tài)鏈接庫”的時代。靜態(tài)鏈接庫與動態(tài)鏈接庫都是共享代碼的方式,如果采用靜態(tài)鏈接庫,則無論你愿不愿意,lib中的指令都被直接包含在最終生成的EXE文件中了。但是若使用DLL,該DLL不必被包含在最終EXE文件中,EXE文件執(zhí)行時可以“動態(tài)”地引用和卸載這個與EXE獨(dú)立的DLL文件。靜態(tài)鏈接庫和動態(tài)鏈接庫的另外一個區(qū)別在于靜態(tài)鏈接庫中不能再包含其他的動態(tài)鏈接庫或者靜態(tài)庫,而在動態(tài)鏈接庫中還可以再包含其他的動態(tài)或靜態(tài)鏈接庫。
用Python執(zhí)行DLL文件:
from ctypes import cdll
def run_dll(dll_path, execute_function):
"""
執(zhí)行DLL文件內(nèi)部指定的函數(shù)
:param dll_path: DLL文件的所在路徑
:param execute_function: DLL文件內(nèi)部要被執(zhí)行的函數(shù)名
:return:
"""
dll_object = cdll.LoadLibrary(dll_path) # 實例化DLL對象
eval('dll_object.{}()'.format(execute_function)) # 調(diào)用DLL文件內(nèi)的指定程序
if __name__ == '__main__':
path = r'C:\Users\evaliu\Desktop\example.dll'
run_dll(dll_path=path, execute_function='communication_test')
總結(jié)
以上所述是小編給大家介紹的Python運(yùn)行DLL文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Python實現(xiàn)快速排序和插入排序算法及自定義排序的示例
這篇文章主要介紹了Python實現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下2016-02-02
pytorch實現(xiàn)下載加載mnist數(shù)據(jù)集
這篇文章主要介紹了pytorch實現(xiàn)下載加載mnist數(shù)據(jù)集方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Python實現(xiàn)多線程/多進(jìn)程的TCP服務(wù)器
這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)多線程/多進(jìn)程的TCP服務(wù)器,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09
selenium執(zhí)行js并繞過webdriver監(jiān)測常見方法
這篇文章主要為大家介紹了selenium執(zhí)行js并繞過webdriver監(jiān)測常見方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
Python3訪問并下載網(wǎng)頁內(nèi)容的方法
這篇文章主要介紹了Python3訪問并下載網(wǎng)頁內(nèi)容的方法,實例分析了Python頁面抓取及寫入文件的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07

