是否可以从 C 调用 require

Ami*_*nos 1 lua

我有一个在共享对象中编译的模块(我遵循了本文的库部分https://chsasank.github.io/lua-c-wrapping.html),我想从 C 而不是从解释器加载它。

是否可以 ?如果是的话怎么办呢?

Vla*_*lad 6

是的,这是可能的,就像require存储在全局环境中的函数一样。当 Lua 需要处理选项时,它在独立解释器中也会做同样的事情-l,请参阅dolibrary函数。

执行此操作的方式与任何其他全局函数相同 - 在最简单的情况下调用 lua_getglobal(),然后将文件名推送到 require,然后调用 lua_call/lua_pcall/whatever。