« Sort と C# と Delphi と | メイン | 仕事したくない病 »

[Delphi] Squirrel for Delphi 苦戦中

squirrel02.png

[Delphi] Squirrel DLLできた (第一種臨界不測日記)の続き。

我ながら、苦戦中。
今回、長文にて失礼。

  • Squirrel のコンパイルテスト
  • Squirrel の dll 化
  • Squirrel の Delphi 版ヘッダー作成
  • コンパイラ兼実行環境 sq.exe の Delphi 版、sq_del.exe の作成
    (↑ここまでオワタ\(^o^)/)
  • SqPlus みたいな、すんげー使いやすいクラスライブラリの作成
  • Delphi + Squirrel をバリバリゲームに使う!(うっとり)

ここまで、二週間。
時間かけすぎだわ!

ヘッダー作成時の苦労話。

前に書いたように
可変個引数(varargs)の問題を解決できなくて、
一か所しか呼ばれてないと思って、固定引数にしたものの、
実は、print文や、エラー出力等において、
ポインタ経由で呼ばれまくってたことが発覚(^ω^#)ビキビキ

けど、ようは、printf を外部に丸投げしてるだけじゃねーかYO!!
printf=可変個引数。
確かになっ。可変個引数なんて所詮は、printfのためのもの。

つーわけで、squirrelのソース書き換えの方向性で。

squirrel の DLL内で、_snwprintf を使い
文字列をあらかじめフォーマッティングして、Delphiに固定引数で渡すようにして解決!しますた
つまりは、printfを可変個引数で、外部に丸投げしないで、DLL内で自前で文字列処理させて、出力のみDelphiに渡す方向。(わかりにくい)
(_snwprintf が、VC++で、警告出るけど、キニシナイ!!というか他にいい方法あったらおせーて)

……さて、
Squirrel の .nutファイルをコンパイルして実行する sq.exe の Delphi版の sq_del.exe について。
とりえあえず、.nutファイルをコンパイルと実行はできるようになりました

面倒なので、対話モードはまだつけてません ('A`)
(対話モード = Interactive Mode。コマンドプロンプトが出て、逐一実行できる。機能的には、本家のsq.exeにあるから、いらんのだけど、ま)

しかし、UNICODE対応にすると、回りがすんげー面倒くさいなー。
いちいち、WideString にキャストして、PWideString でほうらなアカン。

ちなみに、上記に書いた、可変個引数の問題の解決のおかげで、
コンパイルエラー出力等がまともに出るようになってます。

さーーーーてーーーーー。
一番の問題は、SqPlus のようなクラスライブラリ。
SqPlus が C++ の binding で、よさげなのですが、
C++ の template と#defineマクロバリバリで、そのまま移植は無理くさいですわわわわわわ。

付属のサンプル見ると(testSqPlus2.cpp)、
かなり使いやすそうなんで、参考にはしたい!
参考にするだけ!

そもそも、SqPlus 並のライブラリがないと、
スタック操作とかワケワカメで、
まともに使えそうにないのが問題なのだが (´д`;)
(プログラマだから、スタックなんてわかると思いきや、アレは人間がいじるもんじゃねえと再確認)

どうでもいいけど、SqPlus に、
Squirrel から DirectX を呼び出す、
DXSquirrelが付いているのにはビビッタ。
(SqPlus自体、DXSquirrel の改編版?みたいだけど)

Processing とか、sgl @ RubyNodeBox @ Python みたいに、
お手軽 インタラクティブアート環境に、化けるかも?
と、思ったけど、そこまでではないのかな?

いや、DirectX の SDK入れてないからコンパイルできなかたわけだけど……。

参考リンク

カテゴリ: [ Delphi ]

コメントを投稿

Twitter(今何してる?)

プロフィール

あわせて読みたい

あわせて読みたいブログパーツ

人気エントリー

About

2007年06月23日 13:08に投稿されたエントリーのページです。

ひとつ前の投稿は「[C#, Delphi] Sort と C# と Delphi と」です。

次の投稿は「[メンタルヘルス] 仕事したくない病」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。