我有这个C++代码,它需要调用Lua函数。当我得到函数返回值时,一切都很好(“甚至打印结果”),但是当涉及到存储变量时,该值将消失。
LS = luaL_newstate();
luaL_openlibs(LS);
lua_register(LS, "lua_HostFunction", Link::lua_HostFunction);
if (luaL_dofile(LS, "./src/solutions/16t20.lua") != LUA_OK) {
cout << "Error: File not found or inv
我正在尝试写一个lua开关,根据我目前所读到的,这似乎是通过使用一个表来实现的。所以我做了一个非常简单的表,但是当我尝试运行它的时候,我得到一个错误,说table index is null。
最终我想要的是基于不同的输入,这段代码应该调用不同的lua文件。但就目前而言,由于我是这门语言的新手,我想我应该满足于没有那个索引错误。
谢谢
#!/usr/bin/lua
-- hello world lua program
print ("Hello World!")
io.write('Hello, where would you like to go?\n'
我尝试将表写入ini文件,所有操作都正常,直到我添加了一行lua_tostring(L,-2),然后lua_next(L,-2)开始发出错误。在我的理解中,这一行是如何影响的,我只是从堆栈中获取值,而不是更多。我怎么才能修好它?
{
// Push an initial nil to init lua_next
lua_pushnil(inOutState);
// Parse the table at index
while (lua_next(inOutState, -2))
{
if (lua_isstring(inOutState
如何安全地从Lua堆栈读取字符串值?函数lua_tostring和lua_tolstring都会引发Lua错误(longjmp _ of /奇怪类型的异常)。因此,这些函数可能应该在保护模式下使用lua_pcall调用。但我无法找到一个很好的解决方案,如何做到这一点,并获得字符串值从Lua栈到C++。是否真的需要使用lua_pcall在保护模式下调用lua_tolstring
实际上使用lua_pcall似乎不太好,因为我想从Lua堆栈读取的字符串是由lua_pcall存储的错误消息。
有没有一种方法可以将堆上分配的对象返回给lua,而不对它们进行“缓存”引用?
请考虑以下几点:
class foo
{
char const* bar() const
{
char* s = malloc(...);
...
return s; // << Leak. How to transfer the ownership of 's' to lua?
}
};
如果将字符串返回给已分配的内存,则必须将其删除。有没有办法把所有权转让给lua?
或者是否可以让lua_state*实现使用lua
我的Lua表如下所示:
qt={
bid_number=20;
ask_number=20;
bid=table of 20 elements;
ask=table of 20 elemens;
}
所以#qt=0,我想把这个表发送给C++ dll并处理它的字段。我该怎么做呢?目前,我只能使用tbl={a,b,c}这样的表在C++ dll中工作。我是这样做的:
static int forLua_SumArray (lua_State* L) { // Get the length of the table (same as # operator in L
当尝试将Lua中的一组图像转到一个HDF5文件时,我会得到以下错误:
/home/ubuntu/torch/install/bin/luajit: /home/ubuntu/torch/install/share/lua/5.1/hdf5/group.lua:97: attempt to call method 'adjustForData' (a nil value)
stack traceback:
/home/ubuntu/torch/install/share/lua/5.1/hdf5/group.lua:97: in function '_wr
我是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代码不需要编译就可以运行,就像我之前
我正在研究如何在lua字符串(双括号)中嵌入lua函数。我只想详细解释一下我的情况:
example.lua:
function my_message(msg)
return "Your message: " + msg
end
function makeString()
page = [[
<html>
<body>
<!--
I want to call my_message(..) lua function and embed the value here.