43.21 动态加载库

一个 动态加载库(dynamically loaded library) 是指在首次需要其功能时才按需加载的库。Emacs 为部分特性支持此类支持库的按需加载。

Variable: dynamic-library-alist

这是一个关联列表,记录动态库与实现这些库的外部库文件。

每个元素均为形如 (library files…) 的列表,其中 car 是一个符号,代表 Emacs 支持的外部库,其余为字符串,表示该库的备选文件名。

Emacs 会按照列表中的顺序尝试从这些文件加载库;若均未找到,则当前 Emacs 会话将无法使用该库,其提供的功能也将不可用。

部分平台上的图片支持功能使用此机制。以下是在 MS-Windows 上设置该变量以支持图片的示例:

(setq dynamic-library-alist
      '((xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll")
        (png "libpng12d.dll" "libpng12.dll" "libpng.dll"
             "libpng13d.dll" "libpng13.dll")
        (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll"
              "jpeg.dll")
        (tiff "libtiff3.dll" "libtiff.dll")
        (gif "giflib4.dll" "libungif4.dll" "libungif.dll")
        (svg "librsvg-2-2.dll")
        (gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
        (glib "libglib-2.0-0.dll")
        (gobject "libgobject-2.0-0.dll")))

注意,图片类型 pbmxbm 无需在此变量中设置条目,因为它们不依赖外部库,在 Emacs 中始终可用。

另请注意,该变量并非用于访问外部库的通用机制;只有 Emacs 已知的库才能通过它加载。

若指定的 library 已静态链接进 Emacs,则此变量会被忽略。