У меня есть модуль Python, wrapper.py
, который обертывает C DLL. DLL находится в той же папке, что и модуль. Поэтому я использую следующий код, чтобы загрузить его:Python ctypes: загрузка DLL из относительного пути
myDll = ctypes.CDLL("MyCDLL.dll")
Это работает, если я исполню wrapper.py
из своей собственной папки. Если, однако, я запускаю его из другого места, он терпит неудачу. Это потому, что ctypes вычисляет путь относительно текущего рабочего каталога.
Мой вопрос: есть ли способ, которым я могу указать путь к DLL относительно оболочки вместо текущего рабочего каталога? Это позволит мне отправить их вместе и позволить пользователю запускать/импортировать оболочку из любого места.
Я использую подход в [выбранном ответе] (http://stackoverflow.com/a/2980501/1020470), но в одном случае у меня была dll, которая импортировала экспорт из другой DLL, и она не загружалась , Решением было сначала загрузить другую dll, EG: '_DIRNAME = os.path.dirname (__ file__); required_dll = ctypes.cdll.LoadLibrary (os.path.join (_DIRNAME, required.dll)); main_dll = ctypes.cdll.LoadLibrary (os.path.join (_DIRNAME, main.dll)) 'voila, который работает! –