2
文字列を格納するLuaテーブルを関数に渡したいと思います。したがって、たとえば私が持っている場合LuaJIT ffi:文字列の配列をc関数に渡す方法
tStr = {"String1", "String2", "String3"}
私はC関数にどのように渡しますか?私はffi.new呼び出すために持っていると思うが、これはどのようなタイプの私はわからない。..
local cVar = ffi.new("??" , tStr) -- I am not sure what to pass as type
パラメータ
はまた、Cの関数で、私は全体のデータにアクセスする方法がわからない、それはなります文字列を指す文字列ポインタ、** str ??
void cFunction(**str); --What pointer type should be used here ??
... 謝罪私は明らかに何か質問を逃した場合。しかし、私はちょうどLua & ffiで始まっています。私はまだ物事のほとんどを認識していないです..
おそらく '{" ls "、" -l "}'を変数にアンカーする必要があります。 'const char *'はテーブル内の文字列リテラルにポインタを保持します。 – greatwolf
@greatwolf - 一般的に、はい、文字列への参照を生かしておく必要があります。しかし、文字列リテラルは、それを含む関数(実際にはそのプロトタイプ)がガベージコレクトされない限り、自動的に生きています。 –
これは私のために働いた..また、固定サイズの配列を割り当てる必要がなければ、 "const char * [?]"構文を使用してVLAを使用して要素の数を渡すことができるという事実を知りました。 。 –