获取DLL与依赖项进行通信

时间:2016-08-22 18:55:11

标签: python dll

我正在尝试从Python加载DLL,但得到WindowsError: [Error 126] The specified module could not be found.

import ctypes
my_dll = "C:/smt/toolbox/dlls/NMSim_Libraries.dll"
nmsim = ctypes.cdll.LoadLibrary(my_dll)

当我使用Dependency Walker时,它表示缺少3个依赖项,所有这些依赖项都在路径中: “C:\用户\ skeyel \应用程序数据\本地\连续\ Anaconda2 \ LIB \站点包\ numpy的\芯”

我尝试使用以下方法将此路径添加到系统路径:

import sys
sys.path.append("C:\\Users\\skeyel\\AppData\\Local\\Continuum\\Anaconda2\\Lib\\site-packages\\numpy\\core\\")

但这并没有解决问题。如何让.dll与依赖项进行通信?

注意:

  1. 我的计算机上安装了两个Python:随ArcGIS一起提供的2.7.8和Anaconda附带的2.7.11。它在通过Anaconda安装附带的Spyder IDE运行时运行良好。

  2. 它在我的笔记本电脑上运行良好(2.7.8和2.7.11)。

  3. 我根据以下建议检查和/或尝试了各种各样的事情: WindowsError: [Error 126] The specified module could not be found

    3A。 dll存在且dll的路径是正确的,因为当我复制并粘贴完全相同的代码时它适用于一个版本

    3B。 DLL和Python都设置为32位(注意:操作系统是64位)。使用import platform后跟platform.architecture()会将这两个版本都设为32位。

    3c上。我尝试调整sys.path以在两个安装之间包含相同的路径

    3D。我已经尝试os.chdir()更改为.dll目录,然后只按名称加载dll而没有路径信息

    3e中。我已经尝试将列出的缺失依赖项复制并粘贴到与.dll

  4. 相同的文件夹中
  5. 我尝试复制,粘贴和运行所选答案中的(经过最少修改的)代码:Python | accessing dll using ctypes

  6. 以下是完整的追溯:

    Runtime error 
    Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "C:\Users\skeyel\AppData\Local\Continuum\Anaconda2\Lib\ctypes\__init__.py", line 443, in LoadLibrary
        return self._dlltype(name)
    File "C:\Users\skeyel\AppData\Local\Continuum\Anaconda2\Lib\ctypes\__init__.py", line 365, in __init__
        self._handle = _dlopen(self._name, mode)
    WindowsError: [Error 126] The specified module could not be found
    

    似乎有一些我很想念的简单 - 有人知道它是什么吗?

    非常感谢。

1 个答案:

答案 0 :(得分:0)

通过重新安装Anaconda https://www.continuum.io/downloads来解决问题。

我仍然不知道具体问题是什么。

相关问题