2012-05-25 2 views
2

Я смотрел другие сообщения на эту тему, но мне было интересно, если бы это было сделано, не меняясь непосредственно в каталог библиотеки или явно указывая абсолютный путь, например, через sys. path.append или используя переменные среды PATH или CLASSPATH в Windows. То, что я пытаюсь сделать прямо сейчас, это загрузить «jvm.dll»ctypes wont load library

+0

Возможный дубликат [Python | доступ к dll с использованием ctypes] (http://stackoverflow.com/questions/7586504/python-accessing-dll-using-ctypes) – Trilarion

ответ

0

Если у DLL не было зависимостей, можно было бы загрузить библиотеку, передав фабрике ctypes абсолютный путь к DLL (которую вы могли бы определить, как пожелаете). Однако библиотеки DLL часто объединяются вместе и имеют взаимозависимости. Наиболее вероятная ставка, вероятно, заключается в том, чтобы добавить каталог, содержащий DLL, в os.environ['PATH'], чтобы гарантировать, что зависимые библиотеки DLL могут быть автоматически разрешены загрузчиком библиотеки ОС. Обратите внимание: вы можете сделать это только временно, если вас беспокоит загрязнение окружающей среды.

dll_dir = r'c:\foo\bar\path' 
tmp = os.environ['PATH'] 
os.environ['PATH'] = dll_dir + ';' + tmp 
ctypes.LoadLibrary(dll_name) 
os.environ['PATH'] = tmp 
+1

Это также не сработало. На самом деле, вставляем только каталог для PATH, который содержит dll (т. Е. Установка os.environ ['PATH'] = r '' C: \ Program Files (x86) \ Java \ jdk1.7.0_04 \ jre \ bin \ client "') не работает. С другой стороны, os.chdir ('C:/Program Files (x86) /Java/jdk1.7.0_04/jre/bin/client') работает. – Cenoc

+0

Вы пытались добавить его в начало существующего пути, а не полностью заменить путь? Могут потребоваться дополнительные записи PATH. – Rakis

+0

Я так и не повезло. Я думаю, что это может не использовать PATH вообще, что очень странно. – Cenoc