目前,我正在使用Anaconda Suite中的Python 3.4。我有一个名为" libPiCam.dll"在我的工作目录中,我试图以这种方式加载它:
from ctypes import cdll
def load(x):
"""Loads DLL library where argument is location of library"""
x = cdll.LoadLibrary(x)
return x
lib = load("PiCamLib")
但是在这样做的时候,我得到了这个追踪器
Traceback (most recent call last):
File "<ipython-input-27-8d86fac88101>", line 1, in <module>
runfile('C:/Users/User/Documents/Python Scripts/PicamCode/PixisTest.py', wdir='C:/Users/User/Documents/Python Scripts/PicamCode')
File "C:\Users\User\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "C:\Users\User\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 85, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "C:/Users/User/Documents/Python Scripts/PicamCode/PixisTest.py", line 49, in <module>
piFunction = load(piFunctionLib)
File "C:/Users/User/Documents/Python Scripts/PicamCode/PixisTest.py", line 32, in load
x = cdll.LoadLibrary(x)
File "C:\Users\User\Anaconda3\lib\ctypes\__init__.py", line 429, in LoadLibrary
return self._dlltype(name)
File "C:\Users\User\Anaconda3\lib\ctypes\__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 193] %1 is not a valid Win32 application
最让我困惑的是我有一个名为&#34; PiCam.dll&#34;的文件。并以这种方式加载它:
picamLibrary = 'picam'
picam = cdll.LoadLibrary(picamLibrary)
使用上面的eLoad方法加载。这没有错误。我尝试将我的调用加载libPiCam以同样的方式,但我得到了相同的错误。作为背景,我创建并编译了&#34; libPiCam.dll&#34;来自C ++文件的文件以包装它,允许我从Python调用C ++函数(我跟着Calling C/C++ from python?)。
那么,我该怎么办?
答案 0 :(得分:1)
我注意到命名并不完全一致:libPiCam.dll
vs "PiCamLib"
的问题不起作用,PiCam.dll
vs "picam"
的问题不起作用。这是案件的问题吗?你试过"libpicam"
吗?
否则,我不会对Anaconda发行本身的问题感到惊讶。我有几个问题,当Anaconda与Windows交互时,会发生错误。 IE浏览器。 c ++编译器工作不正常,无法导入pywin32,除非我出于某种原因使用IPython运行.py脚本等。