我已经看过关于这个主题的其他文章,但我想知道是否有某种方式做到这一点,而不直接改变到库的目录或显式指定绝对路径,如通过sys。 path.append或在Windows上使用PATH或CLASSPATH环境变量。我现在想要做的是加载“jvm.dll”ctypes将不会加载库
回答
如果问题的DLL没有任何依赖关系,可以通过传递ctypes工厂的绝对路径来加载库DLL(你可以确定你想要的)。但是,DLL通常捆绑在一起并具有相互依赖性。您最可靠的赌注可能是将DLL的包含目录添加到os.environ['PATH']
以确保依赖的DLL可以由OS库加载程序自动解析。请注意,如果您担心污染环境,您可以暂时这样做。
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
这也没有工作。实际上,只把目录放在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
您是否尝试将其添加到现有路径的前端,而不是完全替换路径?可能需要额外的PATH条目。 – Rakis
我做到了,那里没有运气。我认为它可能不会使用PATH,这很奇怪。 – Cenoc
- 1. 将.so库加载到ctypes中
- 2. 使用LLDB加载ctypes的调试库
- 3. getopt库不会加载
- 4. img将不会加载codeigniter
- 5. nsurlrequest将不会加载pdf
- 6. Android:ImageView将不会被加载
- 7. MapFragment将不会加载
- 8. JavaScript将不会加载
- 9. Silverlight将不会加载
- 10. Rails:uglifier gem将不会加载
- 11. phpMyAdmin的将不会加载
- 12. Zend Debugger将不会加载
- 13. Highchartjs将不会加载
- 14. 的DropDownList将不会加载
- 15. Combobox不会加载数据库值
- 16. MySQL数据库项不会加载?
- 17. 不同的表格将不会加载
- 18. 需要帮助使用Ctypes加载共享库
- 19. ASP.NET模型将不会加载我的仓库
- 20. 使用共享库的MySql UDF将不会加载
- 21. 当加载需要的库时,Datetimepicker不会加载
- 22. 无法加载dll python与ctypes
- 23. ctypes的卸载DLL
- 24. 使用Ctypes将CPP函数加载到Python中
- 25. 我的模块将不会加载
- 26. UITableView将不会重新加载contentSize
- 27. 图像将不会从资产加载
- 28. UIImageView将不会加载图像
- 29. PhoneGap插件将不会加载
- 30. PhoneGap Android插件将不会加载
可能的重复[Python |访问DLL使用ctypes](http://stackoverflow.com/questions/7586504/python-accessing-dll-using-ctypes) – Trilarion