怎么解决python导入dll报错windowserror:126, 不是路径的问题 50

python2.7导入该dll却报windowserror126,简单百度下,应该是该dll还依赖其他dll,用dependcywalker查看发现找不到:几个系统文件:... python2.7导入该dll却报windowserror126,简单百度下,应该是该dll还依赖其他dll,用dependcywalker查看发现找不到:几个系统文件:
API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL
API-MS-WIN-CORE-SHUTDOWN-L1-1-1.DLL
API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL
EXT-MS-WIN-NTUSER-UICONTEXT-EXT-L1-1-0.DLL
但我用VS2015又可以正常load和调用该dll,想不明白问题在哪
展开
 我来答
以你之姓y
2020-04-13 · TA获得超过5990个赞
知道答主
回答量:196
采纳率:0%
帮助的人:4.4万
展开全部

解决办法:

加载的时候要根据你将要调用的函数是符合什么调用约定的。 windll和cdll分别是WinDLL类和CDll类的对象。

stdcall调用约定:

Objdll = ctypes.windll.LoadLibrary("dllpath")

Objdll = ctypes.WinDLL("dllpath") 

cdecl调用约定:

Objdll = ctypes.cdll.LoadLibrary("dllpath")

Objdll = ctypes.CDLL("dllpath")

调用后就可以使用dll中的函数

print Objdll.Add(1, 102)

Objdll = ctypes.cdll.LoadLibrary("D:\\dll\\PosterDetector.dll")

扩展资料

python导入dll报错展示:

使用python调用C++的dll报错,错误如下:

Traceback (most recent call last):File "E:/work/proc/video_web/application.py", line 157, in <module>

Objdll = ctypes.cdll.LoadLibrary(os.path.join(APP_ROOT,"dll","PosterDetector.dll"))

File "d:\python27\Lib\ctypes\__init__.py", line 444, in LoadLibrary

return self._dlltype(name)

File "d:\python27\Lib\ctypes\__init__.py", line 366, in __init__

self._handle = _dlopen(self._name, mode)

WindowsError: [Error 126] 

参考资料来源:python 调用dll 报错 WindowsError: [Error 126]

从空去听8
2017-08-14 · TA获得超过7439个赞
知道大有可为答主
回答量:6907
采纳率:93%
帮助的人:5541万
展开全部
不清楚你在加载什么库,不过一般的流程如下
在 Python 里面使用 ctypes 载入 dll 时,如果这个 dll 还依赖于其它的 dll 的话,这些相关的 dll 也得要能被 Python 的进程访问到。如果访问不到就会报以下错误:

[python] view plain copy print?
import sys
sys.path.append('.')
import ctypes
dll=ctypes.cdll.LoadLibrary('dll2python.dll')

Traceback (most recent call last):
return self._dlltype(name)
File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126]
在使用简单的谷歌搜索大法之后,得知:
导致这样的问题有两个最主要的原因
1
系统无法定位到你的DLL 动态库
2
你的DLL 动态库依赖于其他其他DLL 动态库无法被系统找到。

问题一很好解决, 在导入动态链接时,直接加入地址链接:

[python] view plain copy print?
dll=ctypes.cdll.LoadLibrary('E://code text/python/dll2python/python call/dll2python.dll')
基本上问题就解决了

有一点让笔者不解的是,笔者已经导入了当前路径

[python] view plain copy print?
import sys
sys.path.append('.')
系统竟然都找不到,还需要使用绝对路径才能被检索到。 有知道原因的同学请解释一下。

对于问题二, 最基本的解决方式是把相关的DLL 动态库也导进来,这样问题基本就能解决。
对于无法解决的同学,引起这类问题的主要原
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cy花花儿
2019-02-27
知道答主
回答量:1
采纳率:0%
帮助的人:764
展开全部
您好,我也遇到了同样的问题缺少这几个dll,请问您解决了么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式