CでLua変数を変更しようとしています。LuaユーザーデータをC関数に渡すと、C関数がそれらを使用して変更します。Luaでもこれらの値を変更したいと思います。これが私のコードです-
Lua-
t = require 'coroutines'
function foo()
bar = 0
foo1 = t.colorHistogram(bar)
print(bar)
end
C-
ここに何を置くべきかわかりません。2人がどのようにデータを交換するかを読みました。Luaは、引数をプッシュするスタックを作成し、Cはlua_Objectを使用してそれらの引数にアクセスします。それで
int foo = lua_tonumber(L,1);
foo = 5;
fooを0として初期化し、5に設定します。ただし、変更されるのはLuaの変数「bar」が格納されているメモリではないため、Luaのprintステートメントは値として0を表示します。メモリを変更する方法があるかどうか知りたかったのです。また、スタック上のデータを変更された値に置き換えてみました。それも機能しません。
どんな助けでも大歓迎です。ありがとうございました。
編集**
元の質問ではあまり明確ではなかったと思います。申し訳ありませんでした。とにかく、もっと上手くやってみます-
私が基本的にやりたいのは、インラインCに値を渡し、Cにその値を変更させ、Luaで変更されたものとして読み取ることができるようにすることです。その特定のメモリ位置または変数を変更することはあまり気にしません。CがLuaで変更した値を読み取る方法がある限り、それを使用します。
foo1, bar = t.colorHistogram(bar)
「t」はlua関数呼び出しであり、colorHistogramはそのLua関数のインラインC関数であるため、機能しません。バーをt.colorHistogramに渡す場合、バーを返すことができるようにするにはLua関数 "t"が必要になります。つまり、変更されたバーを読み取るにはLua関数"t"が必要になります。それがどうしたらいいかわからない。ところであなたの応答をありがとう。編集終了