當前位置:編程學習大全網 - 源碼下載 - 我現在想把自己寫的python模塊源代碼封裝成dll,然後在別的python腳本裏調用,可以嗎?

我現在想把自己寫的python模塊源代碼封裝成dll,然後在別的python腳本裏調用,可以嗎?

可以的,只要把python模塊轉換成dll模塊,利用Python自帶的ctypes模塊加載調用就行。

ctypes 是Python的外部函數庫。它提供了與 C語言兼容的數據類型,並允許調用 DLL 或***享庫中的函數。可使用該模塊以純 Python 形式對這些庫進行封裝。

ctypes導出了cdll對象,在 Windows 系統中還導出了windll和oledll對象用於載入動態鏈接庫。通過操作這些對象的屬性,妳可以載入外部的動態鏈接庫。cdll載入按標準的cdecl調用協議導出的函數,而windll導入的庫按stdcall調用協議調用其中的函數。

擴展資料:

加載調用DLL的相關方法:

1、加載DLL?

加載的時候要根據妳將要調用的函數是符合什麽調用約定的。?

stdcall調用約定:兩種加載方式?

Objdll = ctypes.windll.LoadLibrary("dllpath")?

Objdll = ctypes.WinDLL("dllpath")

cdecl調用約定:也有兩種加載方式?

Objdll = ctypes.cdll.LoadLibrary("dllpath")?

Objdll = ctypes.CDLL("dllpath")?

其實windll和cdll分別是WinDLL類和CDll類的對象。

2、調用dll中的方法?

加載dll的時候會返回壹個DLL對象(假設名字叫Objdll),利用該對象就可以調用dll中的方法。 e.g.如果dll中有個方法名字叫Add(註意如果經過stdcall聲明的方法,如果不是用def文件聲明的導出函數或者extern “C” 聲明的話,編譯器會對函數名進行修改,這個要註意。)

調用:nRet = Objdll.Add(12, 15) 即完成壹次調用。?

百度百科-ctypes

  • 上一篇:什麽是黃頁?
  • 下一篇:寫出兩句關於竹的詩句
  • copyright 2024編程學習大全網