LuaTeX 文档说明如下:
如果同时加载两个 Lua 库,则加载动态 Lua 库将会失败(这通常会在 win32 上发生,因为 LuaTEX 内部有一个 Lua 5.3,而另一个可能会链接到模块本身的 dll 文件)。
问题很简单:我该如何避免这个问题?我已经在 LuaTeX 之外编译了自己的 Lua,然后根据此 Lua DLL 和附带的 .lib 编译了其他 Lua 模块。现在我想在 LuaTeX 中也使用此库,但我找不到任何有关如何解决此问题的信息。
任何帮助都值得感激:)
编辑:
我说的不够具体。我的问题正是引文中的问题。我在 Windows 上,我得到了错误multiple lua vms detected
,因为我将模块 DLL 链接到了我自己编译的 Lua 的 .lib,并且我试图将这个相同的 DLL 与 LuaTeX 一起使用。我已经找到了--shell-escape
,它在正常情况下找到了我的 DLL LUA_PATH
。但我不知道如何使我的 DLL 能够与任何 Lua 5.3 一起使用。
答案1
在 TeX Live 中,如果使用 kpse,kpse 会根据 CLUAINPUTS 的值搜索 DLL。默认值为
(1) current directory
(2) $BINDIR/$progname/lua//
(3) $BINDIR/$engine/lua//
(4) $BINDIR/lua//
如果不使用 kpse,则会在 $BINDIR 等中搜索 DLL。luatex 使用 kpse,而 texlua 默认不使用 kpse,当然如果初始化得当,texlua 也会使用 kpse。在最近的 luatex 中,选项
--shell-escape
需要加载 DLL。