Saltar al contenido

¿Dónde busca Python una dll abierta por ctypes.cdll? en las ventanas?

Tenemos la mejor respuesta que hallamos en todo internet. Nosotros queremos que te sea de mucha utilidad y si deseas compartir alguna mejora hazlo libremente.

Solución:

El orden de búsqueda de DLL de Windows está documentado en MSDN. No es específico de Python y no hay forma de cambiar el orden de búsqueda desde una opción de línea de comandos. (Pero consulte el artículo vinculado para conocer otras formas de influir en el orden de búsqueda).

la fuente a ctypes/__init__.py lo hace:

from _ctypes import LoadLibrary as _dlopen

No pude encontrar la definición de LoadLibrary en _ctypes.cpero presumiblemente es un envoltorio para Windows LoadLibraryEx función que se comporta de manera similar a la POSIX dlopen función, porque así es como se usa.

Si puede modificar la fuente de Python para usar el ctypes.CDLL constructor en su lugar, debería funcionar:

folder = os.path.dirname(os.path.abspath(__file__))
dll_path = os.path.join(folder, "wiiuse.dll")    
dll = ctypes.CDLL(dll_path)

Si eso no es viable, es posible que pueda parchear ctypes para manejar este caso específico, pero eso parece un poco peligroso. Tal vez simplemente copiar la DLL para que esté en la misma carpeta con la DLL de Python sería la alternativa más fácil.

Comentarios y calificaciones de la guía

Más adelante puedes encontrar las anotaciones de otros desarrolladores, tú incluso puedes mostrar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *