是否可以从C调用require

时间:2019-01-21 18:03:46

标签: lua

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

有可能吗?如果可以,怎么办?

2 个答案:

答案 0 :(得分:4)

是的,有可能,因为require是存储在全局环境中的函数。当需要处理-l选项时,Lua在独立解释器中也执行相同的操作,请参见dolibrary函数。

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

答案 1 :(得分:0)

  

不幸的是,现在,我正在使用Lua 5.1,并且不存在“ dolibrary”函数,我>尝试获取了部分代码,并且崩溃了:\因此,现在,我使用luaL_dostring(L, >“需要'libMyWrappings'”); libMyWrappings必须与c> program在同一目录中,并且我不能使用路径来表示lib。 – Aminos 1月22日11:45

我只是遇到了同样的问题,它必须在加载包库时执行   {LUA_LOADLIBNAME,luaopen_package} 在您尝试调用它之前需要先发生