web-dev-qa-db-ja.com

PythonでDLLを読み込み中にエラーが発生しました。有効なwin32アプリケーションではありません

関数を呼び出すためにDLL in pythonをロードしようとしています。

import ctypes
from ctypes import *

dsusb = ctypes.WinDLL('c:\python27\dsusb.dll')

スタックで次のエラーが発生します。

C:\Python27>python test.py
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    dsusb = ctypes.WinDLL('c:\python27\dsusb.dll')
  File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 193] %1 is not a valid Win32 application

同じコードでcdllも試しました。

私はエラーを調べましたが、Windowsはそれがスペースを含むパスのためであると言います...私は本当に問題ではないと思います...

これを読み込んでいますDLL間違っているか、dllに誤りがある可能性がありますか?

40
jeffpkamp

コメントが示唆するように、それはアーキテクチャの問題かもしれません。

64ビットPythonで32ビットDLLを使用している場合、またはその逆の場合、おそらくエラーが発生します。

以前にエラーが発生したため、32ビットPythonでDLLをロードすることをお勧めします。

42
ABM

同じ問題がありました。 VS2015 x64 Native Toolsコマンドプロンプトを使用してCコードをコンパイルすることで修正しました。これですべてが64ビットになりました。

0
Cassio

このエラーは、他のすべての必要なdllがない場合にも発生する可能性があります。 dllが依存する他のすべての.dllファイルがあることを確認してください。誰かが指摘したように、Dependency Walkerは優れたツールです。

0
remustata