2010-05-17 4 views
1

J'utilise une DLL C++ dans mon code python. Quand je lance mon application python sur mon ordinateur, il fonctionne très bien mais quand je copie tout à un autre ordinateur ce arrivé:Comment réparer cette erreur python de chargement de DLL?

Traceback (most recent call last): 
File "C:\users\Public\SoundLog\Code\Código Python\SoundLog\SoundLog.py", line 9, in <module> 
    from Auxiliar import * 
File "C:\users\Public\SoundLog\Code\Código Python\SoundLog\Auxiliar\DataCollection.py", line 4, in <module> 
    import SoundLogDLL 
File "C:\users\Public\SoundLog\Code\Código Python\SoundLog\Auxiliar\SoundLogDLL.py", line 4, in <module> 
    dll = cdll.LoadLibrary(os.environ['PUBLIC'] + "\\SoundLog\\DLLs\\ForPython\\SoundLogC++WrapperDLL.dll") 
File "C:\Python26\lib\ctypes\__init__.py", line 431, in LoadLibrary 
    return self._dlltype(name) 
File "C:\Python26\lib\ctypes\__init__.py", line 353, in __init__ 
    self._handle = _dlopen(self._name, mode) 
WindowsError: [Error 14001] The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail 

Comment puis-je résoudre ce problème afin que mon travail d'application python dans chaque ordinateur?

Note: J'ai seulement besoin d'eux pour travailler sur Windows 7 comme le mien. Et j'ai testé sur un autre ordinateur win7 (les deux 32bits).

Répondre

3

Vous utilisez une DLL qui dépend d'un environnement d'exécution Microsoft Visual C++ qui n'est pas installé sur l'ordinateur cible. Vous avez quelques options:

  • Installer ou copier les bibliothèques d'exécution Visual C++ à l'ordinateur cible. L'installation est effectuée en ajoutant des modules de fusion à votre programme d'installation (si vous en avez un) ou en exécutant le programme d'installation redistribuable (vcredist.exe). Les différentes méthodes sont documentées here pour VS2005 (les autres versions seront similaires). Si vous avez construit la DLL, vous pouvez modifier les paramètres du projet pour lier statiquement les bibliothèques d'exécution. Voir this answer pour voir comment cela est fait.

+0

Spécifiquement, la bibliothèque ctypes. Je ne suis pas sûr de savoir à quel point Windows le supporte. – rossipedia

+0

@Brian: Windows prend très bien en charge la bibliothèque ctypes. L'erreur ici n'a pas été causée par ctypes, mais par une DLL qui a été chargée à l'aide de ctypes. – interjay

+0

Je l'ai fait en installant les bibliothèques d'exécution Visual C++ et en modifiant l'exécution du projet de Debug à Release ^^ –

Questions connexes