【问题标题】:ctypes wont load libraryctypes不会加载库
【发布时间】:2012-05-25 14:08:23
【问题描述】:

我查看了有关此主题的其他帖子,但我想知道是否有某种方法可以在不直接更改到库目录或显式指定绝对路径(例如通过 sys.path.append 或在 Windows 上使用 PATH 或 CLASSPATH 环境变量。我现在要做的是加载“jvm.dll”

【问题讨论】:

标签: python dll ctypes


【解决方案1】:

如果有问题的 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

【讨论】:

  • 这也不起作用。实际上,只需将目录放入包含 dll 的 PATH 中(即设置 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') 确实有效。
  • 您是否尝试将其添加到现有路径的前面而不是完全替换路径?可能需要额外的 PATH 条目。
  • 我做到了,没有运气。我认为它可能根本没有使用 PATH,这很奇怪。
猜你喜欢
  • 1970-01-01
  • 2021-08-25
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多