1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 13:02:21 ] LuaやSquirrelなどアプリケーションへの組み込み用途で 使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■過去スレ その3 pc11.2ch.net/test/read.cgi/tech/1160799232/ (前スレ) その2 pc8.2ch.net/test/read.cgi/tech/1063711237/ その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html
348 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 20:52:59 ] インタプリタ書いてみた io.open(arg[1]):read("*a"):gsub(([[ ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ KUMA 彡、 |∪| / / __ ヽノ / (___)]]):gsub("[^%a]","%%%1"):gsub("KUMA","(.-)"), function(s)io.write("(_●_)",s,"\n")end)
349 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 08:47:37 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
350 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 11:17:47 ] なんだクマスレか
351 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 14:08:31 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / _ヽ ヽノ ノ/ (___)\/ Urso de lua 「和名: ゥアノワグマ」
352 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 15:11:20 ] さすがにうざいだろこれは…
353 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 15:53:21 ] 他に話題も無いしなあ
354 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 18:57:56 ] つ翻訳
355 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 19:16:01 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
356 名前:デフォルトの名無しさん [2008/10/13(月) 20:58:57 ] Lua 5.2とか機能追加候補とか。 ttp://lua-users.org/wiki/LuaFiveTwo ttp://lua-users.org/wiki/FeatureProposals 個人的にはHash計算しない文字列(バッファ目的)とか 標準にほしいような。LuaSocketとかでそれなりのサイズの 通信行うと、ゴミがたまるので精神衛生上良くない。
357 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 21:50:07 ] そういう部分は後で少しずつCで書き直すわけにはいかないのかな CとLuaの比率をなめらかに変化させるのが理想的だと思う
358 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 23:07:14 ] ところでここはAngelScriptやGameMonkeyの話題はOKなの?
359 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 23:24:21 ] 組み込み系言語総合だからおk
360 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 00:36:47 ] やたら懐かしい名前が出てきたなw
361 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 01:44:37 ] AngelScript使っているひといないの? 結構良さそうなんだけど
362 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 01:53:26 ] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ (⌒ヽ. ∨ ● ●レ /⌒) 、)ヽ) * (/'\ \| ( _●_) ミ' /、)、)´ + + `ヽ彡、 |∪| ノ / Lua!! + 〉 ヽノ / * + ┼ / / + + / /\ \ * + + * / / ┼ ) ) + / / + ( \ * * + (_/ * \_丿 ┼
363 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 02:56:46 ] 流れぶった切るが ゲーム系で問題になるluaのreallocの問題って 1) OSのreallocは排他等高コスト 2) 拡張時のコピーが高くつく 3) メモリ断片化 のどれだろう。また、その代替案として以下は正しい? 1) 2) =>インタフェース変えずにカスタムlua_Alloc作成だけでOK? 3) =>stl::vector ->stl::dequeみたいに配列サイズ追加しても allocが呼ばれない配列管理に変更
364 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 03:07:13 ] >>361 あー、おれも興味あるんだ 文体C++風味で型の扱いが静的というところに魅かれる
365 名前:363 mailto:sage [2008/10/15(水) 03:08:37 ] ちょい修正 1) =>インタフェース変えずにカスタムlua_Alloc作成だけでOK? 2) 3) => 配列サイズ増加時にallocは呼ぶが、stl::deque のような再配置をなくした配列管理にし、また、追加される メモリブロックは固定長に出来るので固定長メモリアロケーター で済む。故にメモリ断片化が防げる。
366 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 05:05:38 ] >>363 ここで聞くほど問題が見当たらないなら 4) そもそも実は問題ない という結論にならないかね? malloc/free が OK で realloc がダメとかおかしいだろ、普通に考えて。
367 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 18:05:36 ] AngelScriptはC++みたいで個人的に大好きなんだが漠然と遅い気がする。 まぁちょろいテストアプリを作っただけなんで作り込んだらいい線いくかもしれないが。
368 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 18:48:39 ] 何だかんだで速度が気になってLuaに戻って来ちゃうんだよなあ。 PythonとかRubyとかちょっと組み込んでみたいんだけども。
369 名前:363 mailto:sage [2008/10/15(水) 20:32:14 ] 反応薄いな。366の言うとおり実は問題にしてる人少ない? 本当にリサイズが発生するのって配列サイズの増加と テーブルのハッシュ再計算時と文字列結合ぐらい? lua自身の配列サイズの増加も倍々方式だし、realloc自体も 同様の最適化されてるので、コピーはそんなに発生しない。 ある程度の大きさのランダムアクセス配列が必要なら、 配列サイズの事前割り当ても可能だし、配列自体の 使いまわしも出来る。 ガベコレはだめだ、参照カウンタがいいってんなら理解できるが。
370 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:22:06 ] そもそもシビアなゲームとかならalloc呼び出す、みたいな設計はしない。
371 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 02:28:44 ] AngelScriptはホスト側のインターフェイスは好みなんだけどなあ・・
372 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 02:34:17 ] AngelScriptにはJITみたいなのないの?
373 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 20:54:50 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
374 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 10:50:51 ] どなたか教えてください。 struct X { int x; }; void B(struct X *x) { printf("%d\n", x->x); } void A() { struct X x; B(&x); } こんな感じで関数Aから関数Bを呼ぶコードがあるとして、 関数BをLuaに書き換えたいのだが、 どうやったらC言語側でメモリ管理している構造体データをLuaの関数に渡せるの?
375 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 11:33:42 ] >>374 lua_pushlightuserdata() メンバ変数をLua側に公開するなら他にも色々必要だろうけど
376 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 15:46:17 ] >>375 ありがとうございます 色々って、たとえばアクセス用の関数を準備するとかですか? ほかになにか手はありますかね。
377 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:31:06 ] >>376 その関数とデータを一つのテーブルにまとめるとか メタテーブルを使うとか メタテーブルの説明はマニュアルにある 何に使うかは自由
378 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 10:50:36 ] SQDEVでSquirrelの自作スクリプト&プログラムのデバッグをやってるんだが、 SquirrelスクリプトにSJISの文字列リテラルを書いてたら Eclipseで毎回コンパイルエラーがでるのは俺だけ? Eclipseの起動前にスクリプトを一時的に削除したりして面倒。 デバッグ用に動かす分には問題ないっぽいんだが。 \
379 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:56:12 ] ヒント:SJIS
380 名前:378 mailto:sage [2008/10/21(火) 18:22:22 ] >>379 今確認したが、UTF-8でスクリプトを用意して bin/squでシンタクスチェックをさせるようにしても、 やはり日本語のリテラル部分でEclipseのエラーメッセージが表示される。 (もちろんsqu -c では問題なし)
381 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 07:47:34 ] ヒント:UTF-8
382 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 12:58:16 ] Eclipseスレでどうぞ
383 名前:デフォルトの名無しさん [2008/10/22(水) 21:17:49 ] とりあえず、SQ-DEVでインストールの仕方を教えてくれ、うまくいかない。
384 名前:378 mailto:sage [2008/10/25(土) 14:22:02 ] >>381 UTF-16LE/BEに変えてみたがやはり変わらず。 それからSquirrelインタプリタsqu.exeはコンパイル時にエラーを吐かないことが結構あることに気づいた。 コンパイルチェックはあまり信用できないんだな。 >>382 説明が悪かった。Eclipseのウィンドウに、「Squirrelスクリプトのコンパイルエラー」と表示されるわけだ。 表示させてるのはSQDEVなので一応まだSquirrelの範囲内。まあしつこいと思われるようだったら黙る。 >>383 俺もつい先週入れたばかりなのでまだ使える情報だと思うが、 1.まずSun Java SEの最新版を入れる。 2.EclipseはC++用じゃなくてJava開発用をインストールすること(CDTは後から入れられる) 3.あとはSQDEVのWikiページの通りでよい
385 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 17:03:25 ] ヒント:UTF-16LE/BE
386 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 19:14:16 ] まず、素のSquirrelはマルチバイド考慮してない 本体のコンパイル時にUNICODE対応させるオプションがある。 内部のUNICODE=UTF-16 だけど確か、読み込み時に標準ライブラリを使ってロードする時はいくつかのUNICODEに対応していたはず、 (UTF-8N,UTF-16のLE,BEあたりだったような) この辺はソース読んでみて、確かめてみて簡単だから
387 名前:378 mailto:sage [2008/10/25(土) 20:10:22 ] >>386 Squirrelソース本体はまさにその通りですね。どうもありがとう。 ところがSQDEVに関しては、どうやらSQDEV自体でSquirrelスクリプトの構文解析をやってるっぽいんだ。 (pluginのJavaソースコードを入手して眺めてみた) このJavaで独自に実装された構文解析器で文法チェックしてるのか、 SQDEVのオプションで指定するインタプリタで文法チェックさせてるのかはまだ調べてない。 残念ながら俺はJava界隈はあまり詳しくないので、どう直したらSJIS対応の構文解析器に改造できるのかがわからん。
388 名前:デフォルトの名無しさん [2008/10/25(土) 21:21:47 ] >>384 syntax checkingもできてないし デバックできなかった。 suspend ready connected SQDBG error : cannot open the file
389 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 01:12:46 ] SQDEVって結構謎めいた奴なんだな
390 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 14:34:30 ] >>388 EclipseでSquirrelパースペクティブを開いているかどうか。 SQDEVの設定は完了しているのかどうか。 プロジェクトのファイルパスがスペースを含まない半角英数字のみで構成されているかどうか。 sqdbglibを含んだインタプリタかどうか。(sqdbg.exe)
391 名前:390 mailto:sage [2008/10/27(月) 15:17:09 ] 補足。 リモートデバッグというのは動いている外部プログラムをSocket越しにモニターするだけのことだから、 デバッグ対象のプログラムが正常に動作するようにする必要がある。 「SQDBG error : cannot open the file」 という言葉通り考えるなら、sqdbg.exe の場合だと 「Default Working Directory」と「Default command line options」の組み合わせが正しくないとか。
392 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:28:22 ] 既出かもしれないが、 SqPlusの初期化において、VMをSQSharedStateNodeに渡してアプリケーション終了時にまで VMの解放を後回しにするコードは丸めてゴミ箱に捨てたほうがいい。回避させたほうが無難。
393 名前:デフォルトの名無しさん [2008/10/27(月) 18:53:29 ] >>392 「Default command line options」がわかんないよ。 「test.nut」じゃないの ほかは全部あってると思う。
394 名前:393 [2008/10/27(月) 18:54:05 ] 間違えた。 >>391
395 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 11:16:46 ] >>393 まあ分からないというなら、ファイル・ディレクトリ構成まで含めてWikiと全く同じにしてごらんよ。 connectedと出ているようだから、sqdbg.exeへのSocket接続は成功しているようだ。
396 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:02:00 ] ∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
397 名前:デフォルトの名無しさん mailto:age [2008/11/03(月) 15:03:40 ] ほっしゅ
398 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:31:08 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
399 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 18:05:01 ] luaで正規表現は使えますか? また、文字列処理に関して、pythonやrubyと 比べるとどうですか?かなり劣ってますか?
400 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 19:13:11 ] >>399 使えます ある程度は劣っていると思います
401 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 19:27:44 ] >>399 文字列の簡単なパターンマッチは標準ライブラリでできますが、 例えばバックトラックを必要とするような複雑なパターンは使えません。 マルチバイト文字のサポートもありません。 あえて言うなら、文字列とbyte列を区別するのが嫌いな人向け。 ちなみにLPegというライブラリでparsing expression grammarが使えるそうです。 ttp://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html
402 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 22:30:15 ] >>400 >>401 レスありがとう。 rubyかpythonの拡張で行こうかと思ってたけど、 組み込みで行くわ。 俄然やる気出てきた。
403 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 23:29:28 ] >>399 ,402 文体の変化にやる気というか、テンションの上がりっぷりが伺えて面白いんだがw
404 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 10:49:20 ] さしあたり、SquirrelにはSJISのテキストを1文字ずつ区切って 配列にぶち込んでくれるAPIが欲しいところだな。
405 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 02:33:13 ] >>404 自分でネイティブ関数作ればいいじゃないかw
406 名前:デフォルトの名無しさん [2008/11/07(金) 20:21:05 ] スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践 って本に関して、Luaの入門書を先に読んだほうが良いですか? それともこの本だけで完結しますか?
407 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 21:05:26 ] 開発効率を上げるためにスクリプト言語(Lua)を利用するという趣旨の本で 読むのにLua自体の知識はあまり必要ない
408 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 21:41:36 ] >406 Luaの構文規則については第4章をまるまる使って解説してる 本に載っている内容だけならこれで十分 自分でなんか作ってみて わからないところが出てきたら Webのリファレンスみればいいんじゃない?
409 名前:デフォルトの名無しさん [2008/11/08(土) 04:24:49 ] ご意見ありがとう御座いました。 大変参考になりました。
410 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 03:47:40 ] あれこれSquirrel(on SqPlus)でテストしたけど、VCで文字コードをUnicodeにした場合、スクリプトコードの日本語はうまく処理できない。 文字列処理をアプリ側でやれば問題はないんだが、スクリプトコードのデバッグに日本語が使えないな。
411 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:04:17 ] lua5.0で割り算をした時に余りを出す方法はないですか?
412 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:27:30 ] ん、5.0って%ないの?
413 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 06:25:36 ] あるならそんな質問しないだろ常識的に考えて・・・
414 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 07:39:32 ] 5.0にはないみたいだね。 sugarpot.sakura.ne.jp/yuno/html/lua5_manual_ja.html#2.5.1 5.1にはあるけど。 sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.5.1 5.0でもmath.modはあるみたいだからそれを使えば。 sugarpot.sakura.ne.jp/yuno/html/lua5_manual_ja.html#5.5
415 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 19:49:36 ] >>411 粘菌に計算してもらえばええよ。 ttp://www.chunichi.co.jp/article/technology/science/CK2008110402000183.html
416 名前:デフォルトの名無しさん [2008/11/12(水) 23:54:16 ] >>411 つ math.mod
417 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:01:26 ] >>416 >>414
418 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:03:58 ] >>417 すまね、携帯で見てて下切れてたorz
419 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:39:50 ] math = nil
420 名前:411 mailto:sage [2008/11/14(金) 23:41:53 ] >>414 ありがとうございます。できました
421 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 10:58:34 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
422 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 10:17:41 ] ∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
423 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:06:01 ] 俺のXtalたんはどうなりましたか?
424 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:06:52 ] 音信不通です
425 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 18:36:16 ] Xtalたんは緊張気味です
426 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 20:12:46 ] 返事がない。ただの屍のようだ。
427 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 21:31:57 ] AngelScripたんなら俺の横で寝てるが
428 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 23:07:10 ] AngelScript色々いじってみたが、結構使いやすいな。 文法がC++なんで慣れてるってのもあるが。 ただ、AngelScriptとC++プログラムを結びつけるのを簡単に行うツールとかないのが残念。 LuaBindとかみたいなやつね。
429 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 15:01:43 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
430 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 15:32:49 ] プログラミング言語のソースコード行数 d.hatena.ne.jp/SumiTomohiko/20081114/1226668855
431 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 20:00:00 ] >>428 バインダがなくてもシームレスに利用できるのがAngelScriptの良いところだと思うのだが。
432 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 23:47:04 ] >>431 確かに。 Luaはいまいち使いこなせなかったが、AngelScriptはその辺楽でよかった。 ただ、例えば ASFunc<int(int,int)> f; f.SetContext(〜); f.SetFuncID(〜); int val=f(a,b); みたいな感じで、普通の関数呼び出しと同じようにAngelScriptの関数呼び出せるのがあれば便利かなーと。
433 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 20:34:35 ] LuaInterface luaforge.net/projects/luainterface/ で.NETのSystem.Drawing.BitmapとかGraphicsを使って画像を読み込んで弄ったり出来るんだけど、 新規にBitmapを作る方法がわからん。 一旦画像を読み込んでそれのクローンをつくるとかいうやり方ぐらいしかうまくいかない。
434 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 08:49:08 ] ∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
435 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 18:43:30 ] いいえ、それはKumaです。
436 名前:410 mailto:sage [2008/11/24(月) 14:51:19 ] アプリ側でsetlocaleすりゃよかったんだな。 UCS2は.NETでしか使ったことなかったので、ロケール失念してた。
437 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 00:12:56 ] すみません、質問があります。 現在、「スクリプト言語による効率的ゲーム開発」という本を読み、 Visual C++ 2008 EE上で空のプロジェクトを作成し、 以下のソースファイルをビルドしてみたのですが、 // 以下、ソースファイル #include <lua.hpp> int main() { lua_State* L = lua_open(); lua_close(L); return 0; } LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 という警告が出ます。 かといってLIBCMTを無視するライブラリに指定するとビルドが通りません。 LNK4098のメッセージを無視する方法以外で、警告メッセージを消す方法はありますか?
438 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 00:51:29 ] LuaのライブラリをコンパイルしたときのCRTとそのプロジェクトのCRTが食い違ってるんじゃね。 大体MTとかその辺のオプションで
439 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 09:08:48 ] >>437 vcppでWin32向けプログラムをビルド際にFAQレベルで発生する問題だ。 Luaに限ったことじゃないのでぐぐればすぐに解決策は出てくる。 ややこしいことにvcppは複数のランタイムライブラリを持っていて、しかも各ライブラリ・プログラム生成時には原則全てあわせる必要がある。
440 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 23:22:38 ] >>439 推測だがLuaのビルドオプションがMTでアプリ側もMDだとこの警告がでる。 この場合でもアプリのほうでLIBCMTを無視する設定にすれば大概大丈夫なはずなんだが・・・ 面倒だったら、両方のランタイムをそろえてしまえばラクだけど
441 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 01:05:16 ] >> 438 >> 439 >> 440 プロジェクトの [構成プロパティ]->[C/C++]->[コード生成]->ランタイムライブラリ を/MDd(マルチスレッドデバッグ DLL)から/MT(マルチスレッド)に変更することで警告がでなくなりました。 おかげで少しVC++についてわかりました。 ご丁寧な回答、ありがとうございました。
442 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 01:44:50 ] 正しい解決法は、 ・LuaのライブラリをCRT毎に6種類全部ビルドする ・#ifdefと#pragma comment(lib,〜)で自動的にそれを選択するヘッダを作る
443 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 15:41:21 ] スクリプト言語による効率的ゲーム開発の本読んで、 確かに動的リロードはできたら便利だよなと思った。 そこでSquirrelで同じことをしようと思ったんだが、問題にぶつかった。 Squirrelの仕様だと、Classは一度インスタンスを生成すると変更不能になる。 この仕様だとSquirrelのクラスはリロードできないんだよな… かといってdelegate使うのは、折角クラス機構があるのにどうよ?と思うんだが、 Squirrelで動的リロードを実装した人いる?
444 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 15:44:13 ] >>442 Makefileで書けば至極簡単だが、(Luaを)プロジェクトファイルで管理したら普通の方法だとものすごく手間がかかりそうだな。 楽にやる方法何かないでしょうか。
445 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 15:45:19 ] >>443 スクエニの小さな王国とかが動的リロードやってる CEDEC2008で言ってた
446 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 15:45:24 ] >>443 おそらく、いったんインタプリタを殺して最初からやり直した方が早いと思う。
447 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:02:33 ] >>444 ヘッダ一発だってばさ
448 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:39:01 ] >>445 やってるのか。詳細が欲しいな。 >>446 今まではまさにその方法でやってた。 色々考えてみたが、ソースに手を加えない方法ではdelegate使うしかないな。 Foo = NewClass( "Foo", SuperClass ); function Foo::foo() { // do something } のようにクラスを記述しないといけないが…