【发布时间】:2012-05-25 09:33:03
【问题描述】:
我正在尝试修改 C 中的 Lua 变量。我将 Lua 用户数据传递给 C 函数,C 函数使用它们并更改它们。我也希望在 Lua 中更改这些值。这是我的代码 -
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。这就是我不知道该怎么做。感谢您的回复顺便说一句。结束编辑
【问题讨论】:
-
-
是的,我知道。这就是为什么我说不是正在修改变量所在的内存,这就是为什么我尝试修改堆栈本身的值。它没有用。不过感谢您的回复:)