python3.8 load dll OSError: [WinError 127] The specified procedure could not be found
Posted
技术标签:
【中文标题】python3.8 load dll OSError: [WinError 127] The specified procedure could not be found【英文标题】: 【发布时间】:2022-01-17 10:43:17 【问题描述】:环境:windows10-64,python3.8.8,
CALL 关系是 -->
-
在文件
jgtrade_api_func_def.py
#!/usr/bin/env python
# coding:utf-8
from ctypes import *
jgtradeapi = windll.LoadLibrary('lib/td/JGTradeApi.dll')
-
在文件
td_api.py
# -*- coding:utf-8 -*-
from jg_api.jgtrade_api import *
###
在main.py
from jg_api.td_api import JGTradeApi
当我运行td_api.py
时,它运行良好
当我运行main.py
时,FileNotFoundError
文件“D:\work\WCJGClient\jg_api\jgtrade_api_func_def.py”,第 14 行,在 jgtradeapi = windll.LoadLibrary('lib/td/JGTradeApi.dll') LoadLibrary 中的文件“D:\ProgramData\Anaconda3\lib\ctypes_init_.py”,第 459 行 return self.dlltype(name) init 中的文件“D:\ProgramData\Anaconda3\lib\ctypes_init.py”,第 381 行 self._handle = _dlopen(self._name, mode) FileNotFoundError:找不到模块“D:\work\WCJGClient\lib\td\JGTradeApi.dll”(或其依赖项之一)。尝试使用带有构造函数语法的完整路径。
然后我把路径改成windll.LoadLibrary('jg_api/lib/td/JGTradeApi.dll')
,错误改了
文件“D:\work\WCJGClient\jg_api\jgtrade_api_func_def.py”,第 14 行,在 jgtradeapi = windll.LoadLibrary('jg_api/lib/td/JGTradeApi.dll') LoadLibrary 中的文件“D:\ProgramData\Anaconda3\lib\ctypes_init_.py”,第 459 行 return self.dlltype(name) init 中的文件“D:\ProgramData\Anaconda3\lib\ctypes_init.py”,第 381 行 self._handle = _dlopen(self._name, mode) OSError: [WinError 127] 找不到指定的程序。
我也试过用绝对路径,但是报同样的错误,有没有人遇到过这样的问题?
【问题讨论】:
【参考方案1】:OMG,我解决了这个问题!!!原因是DLL的引用与pyside2冲突!而且当我更改导入顺序时,它运行良好
【讨论】:
以上是关于python3.8 load dll OSError: [WinError 127] The specified procedure could not be found的主要内容,如果未能解决你的问题,请参考以下文章
ctypes,python3.8:OSError:异常:访问冲突写入0x00000000
使用 python 3.8+(默认协议=5)时,pickle.load 在 python 3.7 中的(协议=4)对象上失败
如何解决java调dll报Unable to load library的错误
WinDbg常用命令系列---.load, .loadby (Load Extension DLL)