Maison > développement back-end > Tutoriel Python > Pourquoi ne puis-je pas charger mon module DLL dans Python 3.8 sous Windows ?

Pourquoi ne puis-je pas charger mon module DLL dans Python 3.8 sous Windows ?

Barbara Streisand
Libérer: 2024-10-28 21:29:02
original
801 Les gens l'ont consulté

Why Can't I Load My DLL Module in Python 3.8  on Windows?

Dépannage lors du chargement des modules DLL dans Python sous Windows

Des tentatives récentes d'importation d'une DLL libuvc compilée sous Windows ont généré l'erreur "Impossible de trouver module 'libuvc.dll'". Bien qu'il ait correctement trouvé le chemin du fichier à l'aide de ctypes.util.find_library, Python ne parvient pas à le charger. Le problème réside dans le paramètre winmode de la fonction ctypes.cdll.LoadLibrary.

Comprendre le paramètre Winmode

Avant Python 3.8, winmode n'existait pas et le mode était défini directement sur ctypes.DEFAULT_MODE, ce qui correspond à une valeur de zéro. Dans Python 3.8, winmode a été introduit.

Lorsque winmode est défini sur Aucun, le mode de recherche par défaut est nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS. Ce mode de recherche ne prend pas en compte les modifications apportées aux variables d'environnement ou aux chemins.

Cependant, définir winmode sur 0 spécifie que le chemin complet doit être utilisé et que la bibliothèque est chargée avec succès. Ce comportement est documenté dans la documentation Microsoft (https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa).

Résoudre le problème

Pour résoudre le problème de chargement, spécifiez simplement winmode=0 lors de l'appel de ctypes.cdll.LoadLibrary, comme dans l'extrait de code suivant :

import ctypes

name = ctypes.util.find_library('libuvc')
lib = ctypes.cdll.LoadLibrary(name, winmode=0)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal