Menyelesaikan Masalah Memuatkan Modul DLL dalam Python pada Windows
Percubaan baru-baru ini untuk mengimport DLL libuvc yang disusun pada Windows telah menghasilkan ralat "Tidak dapat mencari modul 'libuvc.dll'". Walaupun mencari laluan fail dengan betul menggunakan ctypes.util.find_library, Python gagal memuatkannya. Isunya terletak pada parameter winmode dalam fungsi ctypes.cdll.LoadLibrary.
Memahami Parameter Winmode
Sebelum Python 3.8, winmode tidak wujud dan mod telah tetapkan terus kepada ctypes.DEFAULT_MODE, yang sepadan dengan nilai sifar. Dalam Python 3.8, winmode telah diperkenalkan.
Apabila winmode ditetapkan kepada Tiada, mod carian lalai kepada nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS. Mod carian ini tidak mengambil kira perubahan pada pembolehubah atau laluan persekitaran.
Walau bagaimanapun, menetapkan winmode kepada 0 menentukan bahawa laluan penuh harus digunakan dan pustaka berjaya dimuatkan. Tingkah laku ini didokumenkan dalam dokumentasi Microsoft (https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa).
Menyelesaikan Isu
Untuk menyelesaikan isu pemuatan, hanya nyatakan winmode=0 apabila memanggil ctypes.cdll.LoadLibrary, seperti dalam coretan kod berikut:
import ctypes name = ctypes.util.find_library('libuvc') lib = ctypes.cdll.LoadLibrary(name, winmode=0)
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memuatkan Modul DLL Saya dalam Python 3.8 pada Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!