【Lua】組み込み系言語総合 その4【Squirrel】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/03/30(水) 01:00:58.93使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/
その他の参考URLは>2から
■前スレ
【Lua】組み込み系言語総合 その3【Squirrel】
http://hibari.2ch.net/test/read.cgi/tech/1272643397/
■過去スレ
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
その2 http://pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
0097デフォルトの名無しさん
2011/05/01(日) 12:31:36.26coroutine.yield したりしてスクリプトが中断状態にあるときに、
その時点で実行中のスクリプトファイル名(または関数名)と行番号
を得るにはどうすればいいんですか?
0098デフォルトの名無しさん
2011/05/01(日) 12:38:54.26lua_Debug
0099デフォルトの名無しさん
2011/05/01(日) 22:19:09.86返信遅くなって申し訳ないです。
参考になりました。ありがとうございました。
0100デフォルトの名無しさん
2011/05/01(日) 23:16:56.19露骨にAndroidを狙ってくる・・・いやらしい・・・
ん?スマフォはARMv5TEとv7か
0101デフォルトの名無しさん
2011/05/01(日) 23:52:10.31今回も、スマートフォン的に中途半端なので、組み込み目的だと思う。
QUALCOMM Inc. has sponsored an ARM port of LuaJIT 2.0 in January 2011.
http://luajit.org/sponsors.html
0102デフォルトの名無しさん
2011/05/01(日) 23:55:46.890103デフォルトの名無しさん
2011/05/02(月) 00:06:56.38JIT無しで、x1-4
JIT付けると算術系などさらに一部が、x4-16
http://luajit.org/performance_arm.html
0104デフォルトの名無しさん
2011/05/02(月) 03:21:20.06http://wxlua.sourceforge.net/
0105デフォルトの名無しさん
2011/05/05(木) 12:22:52.16手軽に組み込めるCプリプロセッサある?
それともScriptBuilderアドオンを改造するほうが楽?
0106デフォルトの名無しさん
2011/05/05(木) 22:30:17.67#include使った時にエラーの場所がきちっと出せないって難点があるけど。
0107デフォルトの名無しさん
2011/05/06(金) 21:26:46.31スタックガリガリやるとか自分でツールつくっちゃうとかでも行けちゃうような気がするのですが
初心者の僕にアドバイスください
0108デフォルトの名無しさん
2011/05/06(金) 21:29:12.130109デフォルトの名無しさん
2011/05/06(金) 22:52:00.09あとは自分で作るか、誰か作ったのを使うか、の話でしかないです
0110デフォルトの名無しさん
2011/05/06(金) 23:07:10.260111デフォルトの名無しさん
2011/05/06(金) 23:16:21.06http://lua-users.org/wiki/BindingCodeToLua
0112デフォルトの名無しさん
2011/05/06(金) 23:54:56.84理解できないと思う。
少なくとも再利用という観点では絶対に理解できない。
0113デフォルトの名無しさん
2011/05/07(土) 00:13:18.600114デフォルトの名無しさん
2011/05/07(土) 00:15:37.08お呼びでないのでお引き取りください
0115デフォルトの名無しさん
2011/05/07(土) 00:18:59.490116デフォルトの名無しさん
2011/05/07(土) 00:27:32.930117デフォルトの名無しさん
2011/05/07(土) 00:35:42.542位3位がC、C++だった。
0118デフォルトの名無しさん
2011/05/07(土) 00:41:30.270119デフォルトの名無しさん
2011/05/07(土) 07:51:27.060120デフォルトの名無しさん
2011/05/07(土) 08:18:54.412位3位がC、C++だった。」
キリッ
0121デフォルトの名無しさん
2011/05/07(土) 12:28:37.110122デフォルトの名無しさん
2011/05/07(土) 14:06:44.88例えば、Cは別としてC++はJavaに似てるよね、みたいな細かい話になったら困るわけだ
0123デフォルトの名無しさん
2011/05/07(土) 14:31:07.66ソースが公開されてないバインダなんてないんだぜ
0124デフォルトの名無しさん
2011/05/07(土) 22:32:15.82手書きと似ても似つかないようなのは駄目だよな
CGIみたいに、手書きに近い手続きで出力すればいいかもしれない
0125デフォルトの名無しさん
2011/05/08(日) 11:37:22.480126デフォルトの名無しさん
2011/05/08(日) 14:10:52.79var Lua = new ActiveXObject("DynamicWrapper");
Lua.Register("lua5.1.dll", "luaL_newstate", "f=s", "r=h");
Lua.Register("lua5.1.dll", "lua_close", "f=s", "i=h");
Lua.Register("lua5.1.dll", "luaL_openlibs", "f=s", "i=h");
Lua.Register("lua5.1.dll", "luaL_loadstring", "f=s", "i=hs", "r=l");
Lua.Register("lua5.1.dll", "lua_pcall", "f=s", "i=hlll", "r=l");
var L = Lua.luaL_newstate();
Lua.luaL_openlibs(L);
Lua.luaL_loadstring(L,
"f=io.open('out.txt','w')" + "\n" +
"f:write('Hello World!')" + "\n" +
"f:close()" + "\n");
Lua.lua_pcall(L,0,-1,0);
Lua.lua_close(L);
あとはCOMで包んであげる方法があるね
0127デフォルトの名無しさん
2011/05/11(水) 01:21:57.290128デフォルトの名無しさん
2011/05/11(水) 01:28:45.54言語仕様はSquirrel
0129デフォルトの名無しさん
2011/05/11(水) 03:16:44.940130デフォルトの名無しさん
2011/05/12(木) 09:49:02.13ColdRubyなんて処理系があるそうな。
0131デフォルトの名無しさん
2011/05/12(木) 21:45:45.01キタ━━━━(゚∀゚)━━━━ッ!!
って思ったらコンパイル通せねぇ('A`)
0132デフォルトの名無しさん
2011/05/12(木) 21:48:56.08LuaJIT1から比較しても圧倒的じゃないか
0133デフォルトの名無しさん
2011/05/13(金) 00:19:18.740134デフォルトの名無しさん
2011/05/14(土) 14:45:01.990135デフォルトの名無しさん
2011/05/14(土) 15:32:01.580136デフォルトの名無しさん
2011/05/14(土) 17:45:57.290137デフォルトの名無しさん
2011/05/14(土) 20:29:58.37〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua JIT2!!
彡、 |∪| /
/ __ ヽノ /
(___)
0138デフォルトの名無しさん
2011/05/14(土) 20:38:07.67何とかして救ってやりたい
0139デフォルトの名無しさん
2011/05/14(土) 22:25:29.540140デフォルトの名無しさん
2011/05/15(日) 12:06:39.900141デフォルトの名無しさん
2011/05/15(日) 12:56:36.410142デフォルトの名無しさん
2011/05/15(日) 13:08:28.270143デフォルトの名無しさん
2011/05/16(月) 22:18:08.260144デフォルトの名無しさん
2011/05/16(月) 22:21:46.500145デフォルトの名無しさん
2011/05/18(水) 00:11:48.88iupluaとかwxlua?
0146デフォルトの名無しさん
2011/05/25(水) 08:38:14.37Lua側からC言語の関数を呼んでいるときに、
関数内でブレークポイント貼ると、
パソコンがフリーズすることあります。
(luaL_newstate() 〜 lua_close()の間)
どこか想定されるミスはありますでしょうか…。
特に他特殊なことはしてないですが、
スレッド作って回しています。
(Windows7でVisualStudio2005使用です←だからかな…?)
0147デフォルトの名無しさん
2011/05/25(水) 12:21:20.88直接関係があるか分からんが、
デバッグ実行を開始するとフリーズする
のかと思えるくらいDLL読み込みで待たされることはよくあるな。
0148デフォルトの名無しさん
2011/05/25(水) 20:34:38.61ぐーぬぬ。
なんかもう完全にフリーズしてしまうんですよね…。
2010とか試してみますわ〜
0149デフォルトの名無しさん
2011/05/25(水) 22:09:36.57まいりました…
0150デフォルトの名無しさん
2011/05/25(水) 22:51:52.31結構な頻度でフリーズしたよ
0151デフォルトの名無しさん
2011/05/25(水) 23:41:50.53マジっすか…。
もうしょうがないんですかね〜。
「詳細なテキストサービス」をオフにすると改善する可能性がある。
っていう情報を得たので試してみたんですけど、結果は同じでした。
Lua関係ないとしたらスレチですね。
調べてみます…。
ありがとうございました。
0152デフォルトの名無しさん
2011/05/26(木) 09:55:23.27古い話だけどマルチスレッドでデバッグしたときにフリーズする話が色々書いてある
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200307/03070010.txt
VS2010でも直ってないんだなぁ
0153デフォルトの名無しさん
2011/05/26(木) 18:50:13.77s="{1,2,3}"
t= {1,2,3}
sからtに変換する感じで
0154デフォルトの名無しさん
2011/05/26(木) 19:28:28.48s="{1,2,3}"
t={}
asert(loadstring("t="..s))()
0155デフォルトの名無しさん
2011/05/26(木) 19:34:01.75> asert(loadstring("t="..s))()
assert(loadstring("t="..s))()
0156デフォルトの名無しさん
2011/05/26(木) 20:26:40.54t = loadstring('return '..s)()
の方が個人的には好みかな
assertはお好みで
0157デフォルトの名無しさん
2011/05/27(金) 00:39:01.71tbl = { 1, 2, 3}
for i, v in tbl do
doSomeThing(v)
end
みたいなfor文を書いて、使いもしないインデックス'i'を書くことが非常に美しくないと感じているのだが、貴兄はどのように処理しているのだろうか?
0158デフォルトの名無しさん
2011/05/27(金) 01:49:19.170159デフォルトの名無しさん
2011/05/27(金) 06:46:58.590160デフォルトの名無しさん
2011/05/27(金) 07:13:23.47x = {}
x[100000]=0
x[100000]=nil
ってしたら今後xがなくなるまでずっとメモリ上のサイズは100000要素分のまま?
0161デフォルトの名無しさん
2011/05/27(金) 11:45:34.81その書き方がインデクスを使わないことを明示していて良さそうですね。
0162デフォルトの名無しさん
2011/05/27(金) 12:18:08.020163デフォルトの名無しさん
2011/05/27(金) 13:35:12.760164デフォルトの名無しさん
2011/05/27(金) 16:17:32.080165デフォルトの名無しさん
2011/05/27(金) 16:29:13.740166デフォルトの名無しさん
2011/05/27(金) 23:12:39.16なんかどのドキュメントも筆者の書くのだりぃって気持ちが伝わってくる
0167デフォルトの名無しさん
2011/05/28(土) 03:23:56.48web
0168デフォルトの名無しさん
2011/05/28(土) 05:38:27.11具体的にどういった部分がまともではないのかを提起しないと話にならん
0169デフォルトの名無しさん
2011/05/28(土) 18:49:08.28extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"}
でLuaのヘッダのインクルードまでは動作しましたが
lua_State* L;でLuaステートの作成を行ってから
lua_open()やlua_newstate()等どのLua関数を呼び出しても
「1>○○○.obj : error LNK2001: 外部シンボル "_luaL_newstate" は未解決です。」
のエラーが表示されます。
何を行えば解決するでしょうか
0170デフォルトの名無しさん
2011/05/28(土) 18:50:47.590171デフォルトの名無しさん
2011/05/28(土) 19:05:15.01ものすごくテンションあがってきました
0172デフォルトの名無しさん
2011/05/28(土) 19:14:45.580173デフォルトの名無しさん
2011/05/28(土) 20:27:52.420174デフォルトの名無しさん
2011/05/28(土) 20:52:20.05スタックが足りなくなる可能性があるならlua_checkstackで確認
メモリが足りなくなる可能性があるならlua_newstateでアロケータ指定
0175デフォルトの名無しさん
2011/05/28(土) 21:12:21.58割り当てられないか検討
もしデフォルトのmallocなら割と詰んでる。キャッシュ処理とか実装してるなら掃除するとか
0176デフォルトの名無しさん
2011/05/29(日) 00:09:29.700177デフォルトの名無しさん
2011/05/29(日) 00:16:27.580178デフォルトの名無しさん
2011/05/30(月) 17:34:20.92ルアのガベコレとCPPの参照カウントで二重管理になってもったいない気がするんだが……
今はCPPの参照カウントをルアのガベコレでデクリメントさせてるけど
0179デフォルトの名無しさん
2011/05/30(月) 17:36:49.75逆もできる。
0180デフォルトの名無しさん
2011/05/30(月) 17:37:46.17>CPPの参照カウントをルアのガベコレでデクリメントさせてる
ならほぼ最適解じゃない?
0181デフォルトの名無しさん
2011/05/31(火) 21:36:48.46Cで管理してluaにポインタだけ渡してたら型チェックめんどくさくね?
luaL_checkudataが使えないと自分で型チェック書かないといけない
0182デフォルトの名無しさん
2011/06/01(水) 09:28:40.47オプションってある?
0183デフォルトの名無しさん
2011/06/01(水) 09:39:41.55lua_State *L = lua_open();
#ifdef NDEBUG
if(luaL_loadstring(L, "assert = function(...) return ... end") || lua_pcall(L, 0, 0, 0))
{
puts("err"); return 1;
}
#endif
//いつもの処理
lua_close(L);
return 0;
}
Cに合わせてデバッグ切り替えるならこんな感じかな
0184デフォルトの名無しさん
2011/06/01(水) 09:50:00.87assert("ほげほげ")
コンパイル済みソースに "ほげほげ" の部分が現れないようにしたかったんだけど、
プリプロセッサでもつくらないと無理ぽいね
#define assert(x) true
みたいなのが一発でできればいいのに...
0185デフォルトの名無しさん
2011/06/01(水) 21:44:06.76AngelScript|Д`)つboost::wave
AngelScript|`) boost::wave
0186デフォルトの名無しさん
2011/06/02(木) 02:42:57.43assert(...)
assert(...)()
a,b,..=assert(...)
用法マチマチだから厳しいと思うよ
0187デフォルトの名無しさん
2011/06/04(土) 17:01:23.980188デフォルトの名無しさん
2011/06/04(土) 18:50:35.21lighuserdata はよーするに lua はいっさい関与しませんよ、ってデータなので、
その管理の全責任は作った人にある
0189デフォルトの名無しさん
2011/06/04(土) 20:55:35.61int type;
void *ptr;
};
てのをつくって、必ずこれを渡すようにすれば。
MyData data;
data.type = MyObject;
data.ptr = (void *)myObject;
lua_pushlightuserdata(ls, &data);
MyData *arg = (MyData*)lua_tolightuserdata(ls, -1);
switch (arg->type) {
case ...
};
0190デフォルトの名無しさん
2011/06/04(土) 21:14:38.660191デフォルトの名無しさん
2011/06/05(日) 10:37:54.80Luaのほうにオブジェクト指向を意識してインスタンスのsetter/getterメソッド作ってるのがなんか馬鹿らしい。
0192デフォルトの名無しさん
2011/06/05(日) 16:00:05.88インクルードヘッダみろって言われて見てもよくわからないし
0193デフォルトの名無しさん
2011/06/05(日) 18:08:06.75setgetのないクラス設計にすればいいよ
0194デフォルトの名無しさん
2011/06/05(日) 21:04:53.230195デフォルトの名無しさん
2011/06/05(日) 21:09:07.40.property("x", &A::GetX, &A::SetX)
ってやって、C++からはget/setで、Luaからはpublic変数みたいにして
アクセスしちゃう感じで統一してる
0196デフォルトの名無しさん
2011/06/05(日) 22:35:27.70(多重)継承しないでコンポジションをするのが馬鹿らしいっていうのと同じに見える
だからたぶん(多重)継承の問題と同じ結論になる
■ このスレッドは過去ログ倉庫に格納されています