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)

如何解决java调dll报Unable to load library的错误

如何解决java调dll报Unable to load library的错误