summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatti <devnull@localhost>2013-04-08 01:06:02 +0300
committermatti <devnull@localhost>2013-04-08 01:06:02 +0300
commitdf483f88b8805737492c3a74c033c45265b0038a (patch)
tree3359a2b1038763b4ebf338d6179479e53d3e4de2
parentc3c43925a685e8e9157a2f236c0f2e55e7691081 (diff)
downloadcffi-load-from-exe-dir.tar.gz
patch to search exe dir for dll before searching pathload-from-exe-dir
-rw-r--r--cffi/api.py21
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):