我有一个在共享库中编译的模块(我遵循本文https://chsasank.github.io/lua-c-wrapping.html的库部分),我想从C而不是从解释器加载它。
有可能吗?如果可以,怎么办?
答案 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} 在您尝试调用它之前需要先发生