7 votes

Comment donner un chemin au vin pour les fichiers DLL existants

Je tente d'exécuter un programme Windows, qui dépend d'un fichier .dll, qui n'est ni dans le répertoire actuel ni dans le répertoire du programme. La documentation mentionne que la variable "WINEDLLPATH" est utilisée pour donner un indice sur l'endroit où rechercher les bibliothèques. Mais je ne peux pas exécuter le programme même lorsque cette variable est définie :

/home/rudi/foobar $ WINEDLLPATH=/opt/qt/win32/qt/5.6/mingw49_32/bin/ strace -o /tmp/cc1.log /opt/qt/win32/qt/Tools/mingw492_32/libexec/gcc/i686-w64-mingw32/4.9.2/cc1.exe --help
fixme:winediag:start_process Wine Staging 1.9.12 est une version de test contenant des correctifs expérimentaux.
fixme:winediag:start_process Veuillez indiquer votre version exacte lors de la soumission de rapports de bugs sur winehq.org.
err:module:import_dll Bibliothèque libwinpthread-1.dll (nécessaire par L"Z:\\opt\\qt\\win32\\qt\\Tools\\mingw492_32\\libexec\\gcc\\i686-w64-mingw32\\4.9.2\\cc1.exe") introuvable
err:module:LdrInitializeThunk L'initialisation exe principale pour L"Z:\\opt\\qt\\win32\\qt\\Tools\\mingw492_32\\libexec\\gcc\\i686-w64-mingw32\\4.9.2\\cc1.exe" a échoué, statut c0000135

/home/rudi/foobar $ grep libwinpthread-1.dll /tmp/cc1.log                                                                                                              
stat64("/home/rudi/.wine/dosdevices/z:/opt/qt/win32/qt/Tools/mingw492_32/libexec/gcc/i686-w64-mingw32/4.9.2/libwinpthread-1.dll", 0xffcdf99c) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/z:/opt/qt/win32/qt/Tools/mingw492_32/libexec/gcc/i686-w64-mingw32/4.9.2/libwinpthread-1.dll", 0xffcdf694) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/z:/home/rudi/foobar/libwinpthread-1.dll", 0xffcdf99c) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/z:/home/rudi/foobar/libwinpthread-1.dll", 0xffcdf694) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/c:/windows/syswow64/libwinpthread-1.dll", 0xffcdf694) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/c:/windows/system/libwinpthread-1.dll", 0xffcdf694) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/c:/windows/libwinpthread-1.dll", 0xffcdf694) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/c:/windows/syswow64/libwinpthread-1.dll", 0xffcdf694) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/c:/windows/libwinpthread-1.dll", 0xffcdf694) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/home/rudi/.wine/dosdevices/c:/windows/syswow64/wbem/libwinpthread-1.dll", 0xffcdf694) = -1 ENOENT (Aucun fichier ou dossier de ce type)
open("/lib/wine/libwinpthread-1.dll.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Aucun fichier ou dossier de ce type)
open("/lib/wine/libwinpthread-1.dll.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT (Aucun fichier ou dossier de ce type)
open("/opt/qt/win32/qt/5.6/mingw49_32/bin//libwinpthread-1.dll.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Aucun fichier ou dossier de ce type)
open("/opt/qt/win32/qt/5.6/mingw49_32/bin//libwinpthread-1.dll.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT (Aucun fichier ou dossier de ce type)

La partie irritante concerne les deux dernières lignes. Wine tente d'ouvrir /opt/qt/win32/qt/5.6/mingw49_32/bin//libwinpthread-1.dll.so, qui serait le fichier correct, s'il n'y avait pas le suffixe .so.

Existe-t-il un moyen de convaincre Wine de considérer les fichiers .dll dans /opt/qt/win32/qt/5.6/mingw49_32/bin/ de la même manière qu'il traite les fichiers de $PWD ou du répertoire du programme ?

9voto

xdevel2000 Points 3939

J'ai découvert que le vin offre la variable WINEPATH, qui ajoute des chemins supplémentaires pour rechercher d'autres bibliothèques.

WINEPATH=/opt/qt/win32/qt/5.6/mingw49_32/bin/ /opt/qt/win32/qt/Tools/mingw492_32/libexec/gcc/i686-w64-mingw32/4.9.2/cc1.exe --help

fonctionne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X