E.8 编写可动态加载的模块

本节介绍 Emacs 模块 API,以及如何在为 Emacs 编写扩展模块时使用它。模块 API 由 C 编程语言定义,因此本节中的说明与示例均假定模块使用 C 编写。对于其他编程语言,你需要使用相应的绑定、接口与工具来调用 C 代码。 Emacs C 代码要求使用 C99 或更高版本的编译器(see C 语言方言),因此本节中的代码示例也遵循该标准。

编写模块并将其集成到 Emacs 中包含以下工作:

下面的子小节将更详细地介绍这些工作以及 API 本身。

模块编写完成后,根据底层平台的约定将其编译为共享库。然后将该共享库放置在 load-path 所列的目录中(see 库搜索),Emacs 便会在其中找到它。

如果你希望验证模块是否符合 Emacs 动态模块 API,可以在启动 Emacs 时使用 --module-assertions 选项。See Initial Options in The GNU Emacs Manual