トップページtech
1001コメント297KB

プログラミング言語 Lua  その3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/14(土) 13:13:52
だれか サポ−ト 頼む。
前々スレ http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
前スレ http://pc8.2ch.net/test/read.cgi/tech/1063711237/
本家 http://www.lua.org/
lua-users http://lua-users.org/
LuaForge http://luaforge.net/
Lua 5.1 リファレンスマニュアル(日本語訳)
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html
0082デフォルトの名無しさん2006/12/14(木) 08:23:13
>>81
前も書いたけどluabindのあるなしの問題
stackなんか考えるのだるいじゃん
0083デフォルトの名無しさん2006/12/14(木) 09:06:07
squirrelならscriptで使うクラス等の型はscriptで書いてそれを最初にdofileさせるだけだよ
データの送受はインスタンスや配列の中身を直接アクセスするだけで大抵すんじゃうし
native closureの初期下時の組み込みとnative closure内での引数取得と
script側のclosureをcallするとき引数を積むくらいだよstack使うのなんて

実際必要ないからbinderが発達しないんだと思う
0084デフォルトの名無しさん2006/12/16(土) 10:08:48
squirrelをざっと眺めてみたけど、Cと文法が近かったりビット演算が
標準だったり"++"と"+="があったり、いいかも。
ただ、配列とテーブルが違ったり、ジェネレーターとコルーチンが
違ったり、Luaに比べてやや複雑か。気になったのは、
・Luaだとtbl.abcとtbl["abc"]は同じ意味だけどsquirrelでも
 同じ方法はある?
・classとtableの関係は?
・参照カウンタ+GCの意味は循環参照検出にGCを使うという意味?
 パフォーマンスにはどんな影響が?
あたりか。
0085デフォルトの名無しさん2006/12/16(土) 14:23:14
>・Luaだとtbl.abcとtbl["abc"]は同じ意味だけどsquirrelでも
できるよー
>・classとtableの関係は?
ハッシュテーブルの基盤を使ってclassが作られてるようなかんじ?
>・参照カウンタ+GCの意味は循環参照検出にGCを使うという意味?
そうみたい。
でもまともに書いてれば循環参照なんてありえんし
コンパイルオプションで参照カウンタオンリーにしてしまえ
0086デフォルトの名無しさん2006/12/17(日) 14:35:45
squirrelのgeneratorはjump使ったトリック、threadはvmのstate切り替え
luaのcoroutineはどうなってるの?
0087デフォルトの名無しさん2006/12/18(月) 00:25:35
>>86
state切り替え

coroutine.create()から呼ばれるluaE_newthread()見れば、新しいlua_State作ってるのがわかる
0088デフォルトの名無しさん2007/01/01(月) 20:05:52
squirrelはC++だから流行らないとみた。
0089デフォルトの名無しさん2007/01/02(火) 02:35:20
今のところ他人のコードを見たくない言語ナンバーワンだ・・・
0090デフォルトの名無しさん2007/01/02(火) 08:20:31
Cは記号に頼りすぎ。
0091デフォルトの名無しさん2007/01/05(金) 04:39:10
>89
俺はbrainf*ckだな
0092デフォルトの名無しさん2007/01/05(金) 15:18:31
>>91
まず見ることがないじゃないかw
0093デフォルトの名無しさん2007/01/09(火) 00:18:29
なあ、すごく基本的なこと聞いていい?
最近Luaを知って調べ始めたんだが、自作プログラムの外部スクリプトとして
Luaを組み込む方法が全然見つからないんだが、どこへ行けば詳しく書いてるだろうか?
0094デフォルトの名無しさん2007/01/09(火) 00:36:49
>>93
ソースに付属しているインタープリタみれば一発じゃん。
0095デフォルトの名無しさん2007/01/09(火) 00:56:16
>>94
すまん、ソースダウンロードしてみたがさっぱりわからなかった。
Boostとかだと、〜をinlcudeしろ、〜.libのあるところにパスを通せ、といった記述があるのだが、
そういうのが全然見当たらないんだが・・・
0096デフォルトの名無しさん2007/01/09(火) 01:03:26
「lua embed」でググレ
0097デフォルトの名無しさん2007/01/09(火) 01:17:19
>>96
d!
やっと解説してるところが見つかった。
0098デフォルトの名無しさん2007/01/09(火) 19:59:01
>>97
で、どこにあったの?
0099デフォルトの名無しさん2007/01/10(水) 00:14:33
>>98
http://www.codeproject.com/cpp/luaincpp.asp
ただ、ビルドはできたが読み込む際のluaopen_ioで落ちる。
ちょっと作業する時間なかったので、原因はまだ調べてない。
0100デフォルトの名無しさん2007/01/10(水) 20:07:13
The Pawn language
http://www.compuphase.com/pawn/pawn.htm

だれも使ってなさそうな、組み込み言語
0101デフォルトの名無しさん2007/01/11(木) 22:24:14
ゲーム用のスクリプトを探していて、最近Luaを触り始めた者です。
質問なんですが、C++側でlua_Stateをいくつか作ったとき、そのlua_State間で
C++の関数を通じてテーブルの参照渡しをすることはできますか?

どうも値渡しならスタックを再帰でゴリゴリやってできそうな感じですが…。
0102デフォルトの名無しさん2007/01/12(金) 18:30:38
>>101
lua_xmove かレジストリで良いのかな?
0103デフォルトの名無しさん2007/01/12(金) 22:49:52
>>102
lua_xmoveもレジストリも同じglobal stateのスレッド同士じゃないとだめ。
01041012007/01/13(土) 17:04:49
ご回答どうもです。
もう少し方法を考えてみようと思います。
ありがとうございました。
0105デフォルトの名無しさん2007/01/24(水) 14:39:15
ROのほむのAIがLuaで記述できるので触っただけです。
別にLuaが好きなわけじゃないんだからね!
0106デフォルトの名無しさん2007/01/26(金) 13:07:45
帰値がdoubleなのはヘッダいじるとして
cdeclなのが気に食わないのはどうしたらいいものか...
0107デフォルトの名無しさん2007/02/08(木) 05:10:19
部分文字列ってどうやって取得するの?今は
string.char(string.byte(str, x, y))
としてるんだけど、これであってるのかなあ。
Lua 2日目の初心者です。
0108デフォルトの名無しさん2007/02/09(金) 06:24:11
なぜstring.subを使わない
0109デフォルトの名無しさん2007/02/09(金) 16:26:00
最近ゲーム内スクリプトに使われることが多いのかな?
0110デフォルトの名無しさん2007/02/09(金) 17:56:11
>109
昔からいっぱい使われてるじゃないか。
0111デフォルトの名無しさん2007/02/09(金) 17:56:42
つっても2年くらいだけどさ
0112デフォルトの名無しさん2007/02/10(土) 04:55:56
>>108
string.subはstring.gsubとおなじで文字列置換だと思ってた。
正直すまんかった。
0113デフォルトの名無しさん2007/02/10(土) 13:23:01
homeworldはこれ使ってるね
0114デフォルトの名無しさん2007/02/10(土) 21:12:44
>>113
FarCryもつかってたな
0115デフォルトの名無しさん2007/02/11(日) 06:31:15
Homeworldで検索したら凄いなこれ・・・
日本人よ、アニメ絵ゲームで萌えてる場合じゃないぞ!
0116デフォルトの名無しさん2007/02/11(日) 14:37:36
EVE onlineもすごいぞ
今検索したら日本語版も出そうだな。
http://www.4gamer.net/news.php?url=/DataContents/game/0412.html

stackless pythonをサーバー側・クライアント側ともに使ってるらしい。
0117デフォルトの名無しさん2007/02/16(金) 22:15:17
NullLogic Embedded Scripting Language
http://sourceforge.net/projects/nesla/
0118デフォルトの名無しさん2007/02/17(土) 00:54:05
getfenvってlocal変数は取得できないのって不便だな。
function f1(e)
 setfenv(1,e) ;print(a)
end
function f2(f)
 local a=123 ;f(getfenv(1))
end
f2(f1)

で123が表示されてほしいんだけど。
debug.getlocalとか使えばなんとかなるんだろうけど。
getlocalとgetupvalueだけ何でdebug扱いなんだろう。
速度?
0119デフォルトの名無しさん2007/02/17(土) 12:23:25
あげとこう
01201182007/02/21(水) 21:35:09
ぅぅ、誰もいないのか? or どうでもいい話題?

これが出来ないとf1への引数指定をするしかないよね。
f2のローカル変数が増えて且つf1でそれを使う場合
f1の引数宣言をどんどん追加する羽目になるんだよなー。
Cのマクロ展開的に気楽に処理をまとめようとする時
>>118見たいに出来ると便利なんだけど。

-------
話変わるけど、luabind使って
a=luabind_class_a() --luabindで定義したクラス生成
b=luabind_class_b() --luabindで定義したクラス生成
a.p=b ; b.p=a
a=nil ; b=nil
collectgarbage("collect")
ってやっても回収されないような気がする。
(pはluabindでdef_readwrite指定してない)
循環さえしてなければ回収されるっぽい。
そもそもdef_readwrite指定してpに代入すること
自体がまずいのかな?

luabind使ってる人、意見ヨロ。
01211182007/02/21(水) 21:38:11
修正
そもそもdef_readwrite指定してpに代入すること
=> そもそもdef_readwrite指定してないpに代入すること
01221182007/02/21(水) 21:43:47
更に追記
118は最初f1をf2のローカル関数にしてたけど他でも参照しようとして
外部に出した時の話です。
0123デフォルトの名無しさん2007/02/21(水) 22:08:28
luaさわったことないが、luaでは環境=テーブルなんだし
print(e.a)じゃだめなの?もしくはgetfenv(f2)ではどうなる?
getfenv(1)というのがわからんな。ソース読んだ方が早い
01241182007/02/21(水) 22:13:40
>>123
print(e.a)でも駄目。
getfenv(f2)もgetfenv(1)もf2内では
同じ意味(のはず)です。
01251182007/02/21(水) 22:20:39
function f1(e)
 setfenv(1,e) ;print(a)
end
function f2(f)
 setfenv(1,setmetatable({},{__index=_G}))
 a=123 ;f(getfenv(1))
end
f2(f1)

これなら動くんだけどねぇ。
0126デフォルトの名無しさん2007/02/21(水) 23:20:32
>>118
すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。

でもローカル変数はenvironmentが持ってるわけじゃないし
(Function Prototypeが持ってるぽい)
他の関数はスコープの外だから無理だと思うよ。
table:functionの形式にしてselfに持たせるのはどう?
01271182007/02/22(木) 00:27:58
>>126
いえいえ半分愚痴なんで。
たとえば>>118を以下の様に書き換えると
a=456
function f1(e)
 setfenv(1,e) ;print(a) -- 123が表示
end

function f2(f)
 --ここからシンタックスシュガー
 local org_env=getfenv(1)
 local local_env={}
 setfenv(1,setmetatable(local_env,{__index=org_env}))
 --ここまでシンタックスシュガー

 -- aはローカル
 a=124
 f(local_env)

 -- print($a) グローバルなaを表示 =>
 print(org_env["a"]) -- 456が表示
end
f2(f1)
print(a) -- 456が表示

関数先頭でローカル環境設定して
むしろlocalが指定されていないときをlocal変数
と解釈し、Rubyみたく$a見たいに記述された時を
グローバル変数と解釈するほうが安全なようなきがする。
関数内でlocal宣言し忘れてうっかりグローバル汚す
心配もないし。
01281182007/02/22(木) 02:37:14
なんか一人で書き込んでるな (orz
luabindのほうが大問題に思えてきた

class 'abc'
function abc:__init(name) self.name=name ; print("initialize:"..self.name) end
function abc:__finalize() print("finalize:"..self.name) end
a=abc("1")
b=abc("2")
a.p=b;b.p=a --循環
a=nil;b=nil
collectgarbage("collect")

これも__finalizeが呼ばれない模様
上記コードのaもbもuserdataで多分GCがuserdata内部で
持ってる参照を追ってないためリークしてるのではと
予想してみたけど、どうでしょ。
0129デフォルトの名無しさん2007/02/22(木) 12:27:46
luabindはboostまわりで環境(バージョン)依存するし、tolua++使ってるわ。

>>118で何を実現したかったのか見えなかったんだけど、
setfenvとかはあくまでグローバルテーブルが取れるだけだし、
localとupvalueが取れないのは仕様上しょうがない・・・。
debugライブラリ使ってもいいけど、安全上の問題が・・・とかマニュアルに書いてある。

んで、今luaのソースちょっと見てみたら、
ローカル変数は数値インデックスで管理されてて、テーブルになってない。
バイトコード上ではほぼ名前は省かれてて、「このインデックスのローカルにこのインデックスのローカルを代入」みたいな
処理になってると思われる。
グローバル変数をlocalに代入してから処理したほうが高速、といわれるのはこういう理由なのね。

グローバル汚す可能性についてはグローバルのメタテーブルの__newindexをいじくって
制限をつければいいと思う。
01301182007/02/22(木) 19:38:37
>>129
tolua++ってコードジェネレーター系ですよね。
tolua++て>>128みたいなことって出来ます?例えば
a=ABC:new()
b=ABC:new()
a.p=b;b.p=a --aとbで循環参照させる。
a=nil;b=nil
collectgarbage("collect")
出来るとしたら、これでC++側のABCの実体のデストラクタ
って呼ばれます?

>グローバル汚す可能性についてはグローバルのメタテーブルの__newindexをいじくって
誰かがそんなことやってましたね。
0131デフォルトの名無しさん2007/02/23(金) 03:51:29
>>130
newしたものを普通のテーブルと同じように扱ってるところに問題がない?
userdataの可能性が高いし、そのままメンバー追加してどうなるかはluabindの実装によるかも。

tolua++では、new()で生成すると手動でdeleteが必要。
new_local()または クラス名() で生成すればガベコレに任せる。

local a=TestClass()
local b=TestClass()
local ax = { p = a }
local bx = { p = b }
a=nil;b=nil
ax=nil;bx=nil
collectgarbage(0)

これならちゃんと回収されてる。(Lua5.0の場合)
01321182007/02/24(土) 00:04:45
>>130
てゆうか、それ循環してないし。
例え循環させても、テーブルは循環してても当然回収されるので
>>130みたくラッピングすればluabindでも当然回収される。

>>userdataの可能性が高いし、そのままメンバー追加してどうなるかはluabindの実装によるかも。
luabind的にはuserdataだけど一応メタテーブル設定して大丈夫になっています。

>>128にも書いたけど、おそらくuserdataからそれに関連づけされた
luaオブジェクトへの参照をGCが追跡できて無いのでリークしてると思う。
5.0ではuserdataに環境は設定できないけど5.1では出来るようになって
いる。5.1でそうした理由は多分”userdata->その環境table”のパス
をGCでおえるようにして循環参照を検出して回収可能にする為だと思います。
(ぐぐったらそれっぽい議論がされてる。)
おそらくluabindが5.1に対応しきれてないのではと予想して対策を検討中。
01331182007/02/24(土) 00:05:50
まちがえた
>>130では無く>>131です(自分レスしてどうするw)
0134デフォルトの名無しさん2007/02/24(土) 04:44:20
>>132
あ・・・ほんとだぜんぜん循環してないorz

あとLua5.0でもフルユーザーデータにはメタテーブルもてたけどね。
lightuserdataの扱いが変わっただけかと。

問題はメタテーブルの__newindexとかで実際何をやってるかということだけど・・・
0135デフォルトの名無しさん2007/03/10(土) 15:00:02
hoshu
0136デフォルトの名無しさん2007/03/18(日) 02:28:50
Squirrel + SqPlus使ってる人とかっているんかな?

Squirrel側から呼ばせるC++側の関数で
戻り値としてあるクラスのインスタンスをPushするにはどうすればいいんだろう?

0137デフォルトの名無しさん2007/03/29(木) 21:09:52
保守
0138デフォルトの名無しさん2007/04/06(金) 23:54:07
Lua 5.1.2 released.
ttp://www.lua.org/news.html
0139デフォルトの名無しさん2007/04/09(月) 14:51:00
Squirrelのプログラムサイズがでかい…
squirrel.libだけで741KBってどうなんですか?
スクリプトエンジンとか組み込むの初めてなので標準的な尺度がいまいちわかりません。
コンパイルかけたファイルしか使わないと考えればいろいろと削れる部分はあるんでしょうけど、
そういう使い方するのが普通なんですかね?
Luaってどのくらいのサイズなんでしょうか?
0140デフォルトの名無しさん2007/04/09(月) 20:17:31
>>139
自分でexe作成して確認してみな。
そっちのが手っ取り早いぞ。
0141デフォルトの名無しさん2007/04/10(火) 09:23:05
>>139
それでかすぎな気がする
デバッグ情報はってない?
あとstdlibとかなしでそのサイズ?
01421392007/04/10(火) 18:40:41
squirrel.libのサイズが741KBです。
プログラムサイズが小さくなるような最適化設定にしてビルドしたら664KBでした。
両方ともreleaseです。

>>139
一応、プロパティの『デバッグ情報の形式』というところは無効になっています。
01431392007/04/10(火) 18:42:17
訂正
>>139じゃなくて>>141でした。
0144デフォルトの名無しさん2007/04/10(火) 19:05:16
報告乙
0145デフォルトの名無しさん2007/04/10(火) 19:28:56
にしてもでかすぎる気がする。
Linux/gcc-4.1.2だとストリップ前が403926バイト、後が295940バイト
Linux/gcc-3.3.6だとストリップ前が390954バイト、後が281116バイト

…Luaと比べると非常に大きいな。
0146デフォルトの名無しさん2007/04/10(火) 21:07:09
いや、Luaがすんごい小さいってのもあると思う。
0147デフォルトの名無しさん2007/04/10(火) 21:53:40
CとC++の差が大きいよ。サイズはでかくなるしコンパイル遅いしライブラリ
配布ではバイナリ互換性が怪しくなってない?
GCCのバージョンを揃えないとリンクに失敗するとか(←これ本当?)

PerlもRubyもPythonもPHPもLuaもオールCで書かれているのはその辺の事情
と思う。
FirefoxやOpenOfficeはC++で別に問題ないが、オプソのスクリプトエンジンの
ジャンルはC++は駄目でCが適切らしい.
01481392007/04/10(火) 22:12:21
いや、
ttp://www.wanderer.jp/diary/200702.html
ここのサイトの人がコンパイルかけたら270KBくらいだった言ってたり…
VS2005でビルドしてたんですが、gccでメイクしたら450KBでした。
うーん、まだ何かあるのかな?
0149デフォルトの名無しさん2007/04/10(火) 22:25:40
>>147
オープンでも C++ の実装も結構あるよ。
JDK, AVM2, Poly/ML, StrongTalk とか。

俺も C で書いた方が良いと思うけどね。
0150デフォルトの名無しさん2007/04/10(火) 22:44:39
>>149
JDKがC++と判明して、オプソ界では扱いづらいな...と思われてたりして。
0151デフォルトの名無しさん2007/04/10(火) 22:48:23
>>150
昔からソースは公開されていたし、nm すればソース見ないでも C++ だって
分かる人には分かっていたから大丈夫だよ。
0152デフォルトの名無しさん2007/04/10(火) 22:52:18
>>151
あー、そうなんだ。
0153デフォルトの名無しさん2007/04/11(水) 06:46:14
Squirrelって糞だね
0154デフォルトの名無しさん2007/04/11(水) 07:38:08
>>148
VS2005で、SquirrelをDLL化して
Releaseビルド220Kだよ
01551392007/04/11(水) 13:13:13
>>154
それって『構成の種類』をdllに設定してビルドするってことですか?
たしかにsquirrel.dllが170KBくらいで軽くなっているんですが、
sqstdlib.dllがエラーで作成できない…。このリンクエラーどうしました?
01561392007/04/11(水) 15:34:58
>>154
libのサイズってコンパイルさせるために必要なデータが入ってるから
dllより重くなるみたいですね。知りませんでした。
実行ファイルのサイズに影響する分のサイズは二つのlibでだいたい270KBくらいなんだと思います。
ありがとうございました。
0157デフォルトの名無しさん2007/04/11(水) 16:46:14
>>147
Rubyは作者が、オブジェクト指向の言語をオブジェクト指向の言語で書きにくいと言ってる。

>>153
どの辺が?
サイズ大きいのは別に害じゃないと思うけど
0158デフォルトの名無しさん2007/04/22(日) 00:44:07
Xtal 復活記念あげ
0159デフォルトの名無しさん2007/04/28(土) 20:45:47
何かネタないの?
0160デフォルトの名無しさん2007/05/08(火) 17:11:31
保守
0161デフォルトの名無しさん2007/05/09(水) 20:26:56
Squirrel - Lua/組み込み系言語 Wiki*
http://wikiwiki.jp/lua/?Squirrel

Squirrelの参考リンク参考になりました。
サンクス。
0162デフォルトの名無しさん2007/05/13(日) 11:16:32
初歩的なことかもしれないけど
Squirrelで
sq_open使うと

ハンドルされていない例外 : System.TypeLoadException: アセンブリ 'squirreltest, V
ersion=0.0.0.0, Culture=neutral, PublicKeyToken=null' から型 'SQVM' を読み込めま
せん。
at main()
みたいなメッセージでる。調べたけどわからん
助けて
0163デフォルトの名無しさん2007/05/13(日) 11:33:09
すまん自己解決した
なんでこうなるのかよくわからんけど
0164デフォルトの名無しさん2007/05/13(日) 11:41:18
>>163
自己解決したら、解決法をかけとあれほど・・・
0165デフォルトの名無しさん2007/05/13(日) 11:52:47
ttp://support.microsoft.com/kb/871182/jaにのってる

1. MyProject.cpp ファイルに次のコードを含みます。typedef struct _t_Struct *myStruct;

2. 手順 1 で探したコードをの後、次のコードを追加します。 struct _t_Struct
{
};

を書いて
t_Structの部分をSQVMにしたら動いた
プログラム初心者なんで意味がよくわからないし本当に治ってるのかわからないけど
0166デフォルトの名無しさん2007/05/16(水) 15:52:01
squirrel使う人増えれば嬉しいな
今ゲームに組み込んでるのでそこで得た知識をいずれ記事にしてまとめるかも
コードのどこを削るかとか、Windows以外で使うときにメモリ確保部分をどう書き換えるかとか
0167デフォルトの名無しさん2007/05/16(水) 17:29:10
>>166
マジで期待したいです。
0168デフォルトの名無しさん2007/05/16(水) 23:03:00
新言語 Xtalを作る日記
ttp://d.hatena.ne.jp/xtalco/
0169デフォルトの名無しさん2007/05/18(金) 00:35:54
リンク張り逃げだけじゃなく、なにかしらの解説してくれや。
0170デフォルトの名無しさん2007/05/18(金) 20:11:56
>>169
ざっと目を通しただけなので細かいところはわからないけど、
C++への組み込みに使用するとき、スタックを意識せずによいみたい。

残念なのは、ソースがVC依存ぽいところ。
0171デフォルトの名無しさん2007/05/23(水) 03:05:54
>>170
むしろ、レス見てると、gcc依存っぽいが。
0172デフォルトの名無しさん2007/05/23(水) 17:33:52
>>168
xtal-language - Google Code
http://code.google.com/p/xtal-language/

こっちを出さないと
0173デフォルトの名無しさん2007/05/23(水) 20:38:36
Cみたいに文字列の先頭から順にアクセスするとかできないんですか?
0174デフォルトの名無しさん2007/05/23(水) 22:20:10
>>173
おまー、mixiのluaコミュでも同じ質問してるだろ
0175デフォルトの名無しさん2007/05/23(水) 22:38:27
別に効率が悪いだけでstring.subでできるでしょ。
0176デフォルトの名無しさん2007/05/23(水) 23:36:38
>>168,172
なんか凄いところで紹介されてるね

■404 Blog Not Found
君は新言語xtalを知っているか?
ttp://blog.livedoor.jp/dankogai/archives/50836939.html
0177デフォルトの名無しさん2007/05/23(水) 23:59:34
>175
ver5.1使ってるんですけど日本語化パッチが5.02までしかないみたいなんで
sjisに対応できないんですよ。まあ出るのを待ちますか。
0178デフォルトの名無しさん2007/05/24(木) 00:01:39
>>177
自分で改造するんだ!
0179デフォルトの名無しさん2007/05/24(木) 07:36:57
UTF8でいいじゃない
0180デフォルトの名無しさん2007/05/24(木) 14:31:10
>>177
これはどう?

Lua@空想具現化プログラミング
http://hammm.dw.land.to/lua/
0181デフォルトの名無しさん2007/05/26(土) 21:53:29
誰かlua_qt使ってる人いますか?
■ このスレッドは過去ログ倉庫に格納されています