我有一个非常像ImportError的情况:DLL加载失败:%1不是一个有效的Win32应用程序,但答案不适合我.
我的Python代码说:
import cv2
Run Code Online (Sandbox Code Playgroud)
但该行抛出了此问题标题中显示的错误.
我C:\lib\opencv在这台64位机器上安装了OpenCV .我正在使用64位Python.
我的PYTHONPATH变量:PYTHONPATH=C:\lib\opencv\build\python\2.7.这个文件夹包含cv2.pyd,就是全部.
我的PATH变量:Path=%OPENCV_DIR%\bin;...此文件夹包含39个DLL文件,例如opencv_core246d.dll.
OPENCV_DIR具有此值:OPENCV_DIR=C:\lib\opencv\build\x64\vc11.
ImportError的解决方案:DLL加载失败:%1不是有效的Win32应用程序,说"将新的opencv二进制文件路径(C:\opencv\build\bin\Release)添加到Windows PATH环境变量".但是如上所示,C:\lib\opencv\build\x64\vc11\bin我的PATH中已经有OpenCV二进制文件夹().我的OpenCV安装没有任何Release文件夹(build/java下的空文件夹除外).
关于出了什么问题的任何想法?我可以告诉Python详细跟踪加载过程吗?究竟是什么DLL正在寻找?
谢谢,拉尔斯
我只注意到,根据http://www.dependencywalker.com/中,cv2.pyd在C:\lib\opencv\build\python\2.7为32位,而机器和我跑了Python是64位.这可能是问题吗?如果是这样,我在哪里可以找到64位版本的cv2.pyd?
我试图在python中加载DLL来调用函数.
import ctypes
from ctypes import *
dsusb = ctypes.WinDLL('c:\python27\dsusb.dll')
Run Code Online (Sandbox Code Playgroud)
我的堆栈中出现以下错误.
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
Run Code Online (Sandbox Code Playgroud)
我也尝试使用相同的代码cdll.
我查了一下错误,窗户说它是由于一个包含空格的路径......我认为这不是真正的问题......
我加载这个DLL是错误的还是在dll中可能存在错误的东西?
我试图使用来自ctypes的命令find_library(),但我收到一个错误,我不明白它的原因.我在Windows上工作
这是代码:
import ctypes
from ctypes.util import find_library
import numpy
from string import atoi
from time import sleep
# Class constants
#nidaq = ctypes.windll.nicaiu
nidaq = ctypes.cdll.LoadLibrary(find_library('NIDAQmx'))
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
nidaq = ctypes.cdll.LoadLibrary(find_library('NIDAQmx'))
File "C:\Python27\lib\ctypes\__init__.py", line 443, in LoadLibrary
return self._dlltype(name)
File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
TypeError: expected string or Unicode object, NoneType found
Run Code Online (Sandbox Code Playgroud)
我应该将NIDAQmx放在特定的地方,以便找到它吗?或者这是无关的?
谢谢!