Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 可以从C调用require吗_Lua - Fatal编程技术网

Lua 可以从C调用require吗

Lua 可以从C调用require吗,lua,Lua,我有一个在共享对象中编译的模块(我遵循了本文的库部分),我想从C而不是从解释器加载它 可能吗?如果是,怎么做?是的,这是可能的,因为require是存储在全局环境中的函数。当Lua需要处理-l选项时,它会在独立解释器中执行相同的操作,请参见函数 您可以使用与任何其他全局函数相同的方法执行此操作—在最简单的情况下,调用lua_getglobal(),然后将文件名推送到require,然后调用lua_call/lua_pcall/whatever。是的,这是可能的,因为require是存储在全局环境

我有一个在共享对象中编译的模块(我遵循了本文的库部分),我想从C而不是从解释器加载它


可能吗?如果是,怎么做?

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


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

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

执行此操作的方式与使用任何其他全局函数的方式相同—在最简单的情况下,调用lua_getglobal(),然后按需输入文件名,然后调用lua_call/lua_pcall/which


不幸的是,现在我使用的是Lua5.1,而“dolibrary”函数不存在,我>试图获取部分代码,但它崩溃了:\n所以,现在,我使用luaL_dostring(L,>“需要‘libMyWrappings’”);libMyWrappings必须与c>程序位于同一目录中,并且我不能使用路径来指示库Aminos 1月22日11时45分

我刚刚遇到了同样的问题,在加载包库时必须这样做 {LUA_LOADLIBNAME,luaopen_package} 在你试着打电话之前需要先发生


不幸的是,现在我使用的是Lua5.1,而“dolibrary”函数不存在,我>试图获取部分代码,但它崩溃了:\n所以,现在,我使用luaL_dostring(L,>“需要‘libMyWrappings’”);libMyWrappings必须与c>程序位于同一目录中,并且我不能使用路径来指示库Aminos 1月22日11时45分

我刚刚遇到了同样的问题,在加载包库时必须这样做 {LUA_LOADLIBNAME,luaopen_package}
在你试着称之为

之前需要发生的事情是,有趣的是,你会认为,
luaL_requiref
会做与你所说的相同的事情。但事实并非如此。除非您提供的C函数处理软件包机制。@Nicolas,
luaL_requiref
几乎等同于
require
。它跳过了加载程序的内容,因为它与C函数无关。@lhf:但“加载程序的内容”在很大程度上是人们使用
require
开始的原因。检查表中是否存在某些内容并不困难,如果不存在,则将加载程序的结果粘贴到该表中也不困难。最困难的部分是遍历每个
包.loader
可能性,并按顺序调用它们,直到一个结果正确为止。不幸的是,现在,我使用的是Lua5.1和“dolibrary”函数不存在,我试图获取部分代码,但它崩溃了:\n因此,现在,我使用luaL_dostring(L,“require'libMyWrappings'); libMyWrappings必须和c程序在同一个目录中,我不能用路径来表示lib。有趣的是,你会认为
luaL_requiref
会做与你所说的相同的事情。但事实并非如此。除非您提供的C函数处理软件包机制。@Nicolas,
luaL_requiref
几乎等同于
require
。它跳过了加载程序的内容,因为它与C函数无关。@lhf:但“加载程序的内容”在很大程度上是人们使用
require
开始的原因。检查表中是否存在某些内容并不困难,如果不存在,则将加载程序的结果粘贴到该表中也不困难。最困难的部分是遍历每个
包.loader
可能性,并按顺序调用它们,直到一个结果正确为止。不幸的是,现在,我使用的是Lua5.1和“dolibrary”函数不存在,我试图获取部分代码,但它崩溃了:\n因此,现在,我使用luaL_dostring(L,“require'libMyWrappings'); libMyWrappings必须与c程序位于同一目录中,并且我不能使用路径来指示lib。