美文网首页
ctypes 载入 dll 产生[WinError 126] 错

ctypes 载入 dll 产生[WinError 126] 错

作者: 逗號先生 | 来源:发表于2019-12-17 14:35 被阅读0次

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

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

    报错信息:

    Traceback (most recent call last):
    File "E:\PyCharm 2017.3.4\helpers\pydev\pydev_run_in_console.py", line 53, in run_file
    pydev_imports.execfile(file, globals, locals) # execute the script
    File "E:\PyCharm 2017.3.4\helpers\pydev_pydev_imps_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
    File "D:/ProJect/PyCharm/DataPrepare/testDLL.py", line 7, in <module>
    Objdll = ctypes.cdll.LoadLibrary('D:\ge\testDLL\x64\Debug\testDLL.dll')
    File "C:\Python36\lib\ctypes_init_.py", line 426, in LoadLibrary
    return self.dlltype(name)
    File "C:\Python36\lib\ctypes_init
    .py", line 348, in init
    self._handle = _dlopen(self._name, mode)

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

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

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

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

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

    解决方案:

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

    作者:cxlovu
    来源:CSDN
    原文:https://blog.csdn.net/u012505618/article/details/81047988
    版权声明:本文为博主原创文章,转载请附上博文链接!

    相关文章

      网友评论

          本文标题:ctypes 载入 dll 产生[WinError 126] 错

          本文链接:https://www.haomeiwen.com/subject/sobvbqtx.html