我是Lua的新手,使用了一些教程,尝试了一些基本的东西,比如编写通用算法等。
但是我在我的mac os机器上使用lua解释器时遇到了一些问题。
例如,我们有一个名为'sample.lua‘的文件,其中包含以下代码行:
function fib(n) return n<2 and n or fib(n-1)+fib(n-2) end
如何从终端运行该函数?如果我不使用任何函数,我只需要使用'lua script.lua‘来调用脚本-工作!
下一个问题是关于非编译的lua-source和编译的lua-source之间的基本理解。为什么lua代码不需要编译就可以运行,就像我之前
让我们在“luafunc.lua”中有一个代码:
function foo(a, b)
return a + b
end
a = io.read('*n')
b = io.read('*n')
print (foo(a, b))
让我们尝试使用C++文件中的function:
#include <iostream>
using namespace std;
extern "C"{
#include <lua.h>
#include <lualib.h>
#include &l
我有一个Lua解释器,每当我在代码中出现语法错误时,返回的错误消息就是attempted to call a string value,而不是有意义的错误消息。例如,如果我运行这个lua代码:
for a= 1,10
print(a)
end
它将返回错误'do' expected near 'print',而不是返回有意义的attempted to call a string value和行号。
我的C++代码如下:
void LuaInterpreter::run(std::string script) {
luaL_openlibs(m_ma
我正在尝试调用一个名为test2.lua的lua文件中的函数,这是test2.lua的内容:
function abc(path)
t = {}
table.insert(t, "a")
return t
end
正如您所看到的,它只接受一个输入并返回一个字符串。
这是我的C代码。这相当简单。然而,我为了调用该函数而调用getglobal并不起作用...当我测试它时,lua_getglobal说它不是一个函数...有什么原因吗?abc不应该是一个在源文件内部返回的全局函数吗?那么为什么它只为这个全局变量找到nil呢?
L = lua_open();
luaL_openli
我试图让luasocket在的lua脚本环境中工作,但到目前为止还没有成功。我下载了luasocket 的版本,确保安装了vc8,并检查了bizhawk: 5.1附带的lua版本。
但是,当我启动脚本时,我会得到以下错误:
LuaInterface.LuaScriptException: error loading module 'socket.core' from file './libs/socket\core.dll':
Das angegebene Modul wurde nicht gefunden. (the given module was
我正在将Lua嵌入到C/C++应用程序中。有没有办法在不执行整个脚本的情况下从C/C++调用Lua函数?
我试过这样做:
//call lua script from C/C++ program
luaL_loadfile(L,"hello.lua");
//call lua function from C/C++ program
lua_getglobal(L,"bar");
lua_call(L,0,0);
但它给了我这个:
PANIC: unprotected error in call to Lua API (attempt to call a nil
我在一个文件中有一些lua代码。我想创建这段代码的多个闭包实例,每个实例都有一个不同的_ENV upvalue。我可以使用加载文件并设置第一个upvalue,对不同的表设置N次,以创建N个实例。但是这不是加载和编译文件N次吗?
除了没有loadfile之外,lua等效于我想要做的事情如下
func_list = {}
for i = 1, 10 do
local new_env = {hello=i, print=print}
func_list[i] = loadfile("Code.lua", "t", new_env)
end
for
我正在利用C++全局变量的构造函数的行为,以一种简单的方式在启动时运行代码。这是一个非常简单的概念,但解释起来有点困难,所以让我粘贴代码:
struct _LuaVariableRegistration
{
template<class T>
_LuaVariableRegistration(const char* lua_name, const T& c_name) {
/* ... This code will be ran at startup; it temporarily saves lua_name and c_name in a
我正在尝试在Lua5.2中使用luasocket。我从git存储库下载了代码并构建了它。然后进行make install,生成core.dll和mime.dll。将这些文件放入定制的lua程序目录CPATH im developing,并尝试加载它。但我得到以下错误消息:
Failed at error loading module 'socket.core' from file 'D:\[..myprogram..]\socket\core.dll':
Module was not found.
如何检查dll是否正确。还是我做错了什么?
谢谢
我试图通过引入新的内置方法和功能来黑一个游戏(而不是作弊),以便使用套接字与游戏进行通信。下面是我想要完成的一个小的“伪代码”示例:
在Lua代码中,我调用my_hack()并传递当前的游戏状态:
GameState = {}
-- Game state object to be passed on
function GameState:new()
-- Data
end
local gameState = GameState:new()
-- Collect game state data and pass it to 'my_hack' ..
my_hack(gam
我正在尝试将LuaJIT嵌入到一个C应用程序中。代码如下:
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <stdlib.h>
#include <stdio.h>
int barfunc(int foo)
{
/* a dummy function to test with FFI */
return foo + 1;
}
int
main(void)
{
int status, result;
lua_St