OSError: [WinError 126] 找不到指定的模块

当Python使用ctypes加载依赖于其他DLL的C++自定义DLL时,遇到[WinError 126]找不到指定模块的错误。问题在于Python进程无法找到依赖的DLL。解决方案包括修改工作路径至DLL目录,或添加DLL路径到系统环境变量,或把所有DLL复制到Python解释器所在目录。避免此类问题的最佳实践是确保所有依赖库在Python能够访问的路径下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

背景:c++自定义创建dll,依赖于gda201.dll(如何创建dll的部分略),并提供给python调用

Objdll = ctypes.cdll.LoadLibrary('D:\\ge\\testDLL\\x64\\Debug\\testDLL.dll')    # 此处建议绝对路径

 

很显然,错误的原因在于testDLL.dll依赖于gda201.dll,而Python 进程没有找到

单纯将这两个dll文件放在同一目录下是没有作用的,因为Python进程起始路径并不是testDLL.dll的目录。

网上的建议是在系统环境的 path 里面里面加入 dll 的目录,或者把这些 dll 都一起复制到 Python.exe 所在的目录。但是我觉得不妥,虽然暂时解决了问题,但是若是将testDLL.dll交给其他环境使用时一样会出问题。

解决方案其实非常简单,修改当前的工作路径即可。

解决方案:

增加语句os.chdir('D:\\ge\\testDLL\\x64\\Debug\\')

 

OSError: [WinError 126] 找不到指定的模块

我这里是缺少动态库:

libx264-155.dll

 

在 Python 里面使用 ctypes 载入 dll 时,如果这个 dll 还依赖于其它的 dll 的话,这些相关的 dll 也得要能被 Python 的进程访问到。如果访问不到就会报以下错误:

>>> import cty

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值