代码之家  ›  专栏  ›  技术社区  ›  debashish

ctypes如何。cdll。LoadLibrary(无)工作?

  •  6
  • debashish  · 技术社区  · 6 年前

    如何 ctypes.cdll.LoadLibrary() 呼叫使用 None 作为参数传入?当我尝试下面的代码时,似乎 math 自动加载库:

    >>> import ctypes
    >>> lib = ctypes.cdll.LoadLibrary(None)
    >>> lib.sin
    <_FuncPtr object at 0x7f36dd65f430>
    >>> lib.exp
    <_FuncPtr object at 0x7f36dd65f4f8>
    >>> 
    

    如何 数学 是否在未显式指定的情况下加载库?是否加载了标准库中的所有共享库?我不明白幕后发生了什么事。

    1 回复  |  直到 6 年前
        1
  •  4
  •   CristiFati    5 年前

    笔记 :您在上遇到此问题 尼克斯 (打开 这是不可复制的)。

    看看 [SO]: How to check whether a file exists without exceptions? (@CristiFati's answer)
    在最后一部分中 注释 第)节,共 项目 #4 ,我引用了 [man7]: DLOPEN(3) :

    如果 文件名 为NULL,则返回的句柄用于 程序当提供给 dlsym公司 (),此句柄导致搜索 主程序中的符号,后跟加载在中的所有共享对象 程序启动,然后加载所有共享对象 dlopen公司 ()与 旗帜 RTLD\U全局

    加载库时使用,根据 [Python 3]: Loading shared libraries :

    所有这些类都可以通过至少使用一个参数(共享库的路径名)调用它们来实例化。如果已有已加载共享库的句柄,则可以将其作为 handle 命名参数,否则为基础平台 dlopen LoadLibrary 函数用于将库加载到进程中,并获取其句柄。