我正在尝试修改 C 中的 Lua 变量。我将 Lua 用户数据传递给 C 函数,C 函数使用它们并更改它们。我也希望在 Lua 中更改这些值。这是我的代码 -
卢阿 -
t = require 'coroutines'
function foo()
bar = 0
foo1 = t.colorHistogram(bar)
print(bar)
end
C -
在这里我不知道该放什么。我读了两个如何交换数据。Lua 创建一个堆栈,它将参数推入其中,C 使用 lua_Object 访问这些参数。所以
int foo = lua_tonumber(L,1);
foo = 5;
会将 foo 初始化为 0 并将其设置为 5。但是,Lua 中的 print 语句仍然显示 0 作为值,因为它不是存储 Lua 中的变量“bar”的内存正在被修改。我想知道是否有办法修改内存。我还尝试用修改后的值替换堆栈上的数据。那也不行。
任何帮助表示赞赏。谢谢你。
编辑**
我想我最初的问题不是很清楚。我试过对不起。反正我会努力的
我基本上想要做的是将一个值传递给内联 C,让 C 修改该值并能够按照在 Lua 中修改的方式读取它。我不太关心修改那个特定的内存位置或变量。只要有某种方法可以让我读取 C 在 Lua 中修改的值,我就会接受。
foo1, bar = t.colorHistogram(bar)
将不起作用,因为“t”是 lua 函数调用,而 colorHistogram 是该 Lua 函数中的内联 C 函数。如果我将 bar 传递给 t.colorHistogram,我需要 Lua 函数“t”才能返回 bar,这意味着我需要 Lua 函数“t”来读取修改后的 bar。这就是我不知道该怎么做。感谢您的回复顺便说一句。结束编辑