arrayfire-python: Windows Arrayfire C library loading error even after using ctypes to help debug

It seems there is a missing DLL problem that prevents Arrayfire from running on a new installed Windows machine. The Python (3.7.1) is installed through Anaconda, and the Arrayfire binary installation file and Visual C++ Runtime 2015 are also installed. All in x64 version (so not exactly the same as #166). However, when importing in Python by import arrayfire, I still get the following error

RuntimeError: Could not load any ArrayFire libraries.
Please look at https://github.com/arrayfire/arrayfire-python/wiki for more information.

To distill the cause of the error, I use ctypes to import the arrayfire DLL to see if it is successful, only to find that the DLL file cannot be loaded either

In [2]: import ctypes
In [3]: import os
In [4]: dll_path = r'C:\Program Files\ArrayFire\v3\lib\afcpu.dll'
In [5]: os.path.exists(dll_path)
Out[5]: True
In [6]: ctypes.cdll.LoadLibrary(dll_path)
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-6-97edb3acce44> in <module>
----> 1 ctypes.cdll.LoadLibrary(dll_path)
C:\ProgramData\Anaconda3\lib\ctypes\__init__.py in LoadLibrary(self, name)
    432
    433     def LoadLibrary(self, name):
--> 434         return self._dlltype(name)
    435
    436 cdll = LibraryLoader(CDLL)
C:\ProgramData\Anaconda3\lib\ctypes\__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error)
    354
    355         if handle is None:
--> 356             self._handle = _dlopen(self._name, mode)
    357         else:
    358             self._handle = handle
OSError: [WinError 126] The specified module could not be found

It seems that a dependent DLL is missing but the error message is not very helpful…

About this issue

  • Original URL
  • State: open
  • Created 5 years ago
  • Comments: 25 (19 by maintainers)

Most upvoted comments

I have two different setups at home and at work: at home: Win 10 Pro 64, AF 3.6.2 -> error message like @hyliu1989 at work: Win 7 Pro 64, AF 3.5.1 -> ‘Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.’ (this is a new issue)

I installed af-python via pip (v3.6.20181017) into identical Python 3.6.5 distros (Winpython) in both cases.

I’ll dig into it and try dependencywalker today.