diff options
| author | matti <devnull@localhost> | 2013-04-08 01:06:02 +0300 |
|---|---|---|
| committer | matti <devnull@localhost> | 2013-04-08 01:06:02 +0300 |
| commit | df483f88b8805737492c3a74c033c45265b0038a (patch) | |
| tree | 3359a2b1038763b4ebf338d6179479e53d3e4de2 | |
| parent | c3c43925a685e8e9157a2f236c0f2e55e7691081 (diff) | |
| download | cffi-load-from-exe-dir.tar.gz | |
patch to search exe dir for dll before searching pathload-from-exe-dir
| -rw-r--r-- | cffi/api.py | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/cffi/api.py b/cffi/api.py index b050b55..079cf6d 100644 --- a/cffi/api.py +++ b/cffi/api.py @@ -359,10 +359,23 @@ def _make_ffi_library(ffi, libname, flags): backendlib = backend.load_library(name, flags) except OSError: import ctypes.util - path = ctypes.util.find_library(name) - if path is None: - raise OSError("library not found: %r" % (name,)) - backendlib = backend.load_library(path, flags) + backendlib = None + if os.name == 'nt': + import sys + # Allow name in exe location, + # like in ctypes.util.find_library + directory = os.path.dirname(sys.executable) + if os.path.isfile(os.path.join(directory, name)): + backendlib = backend.load_library(name) + if not name.lower().endswith('.dll'): + tmpname = os.path.join(directory, name + '.dll') + if os.path.isfile(tmpname): + backendlib = backend.load_library(name) + if not backendlib: + path = ctypes.util.find_library(name) + if path is None: + raise OSError("library not found: %r" % (name,)) + backendlib = backend.load_library(path, flags) copied_enums = [] # def make_accessor(name): |
