SUZZ Blog

主にアーケード、レトロゲームに関するブログ

WideStudio を Cygwin で動かす

2009年05月04日 17時03分28秒 | PC
ということで気を取り直して Cygwin で試してみた。
Interix (SFU 3.5) の成果を利用して、こちらは最初からスタティックリンクでビルド。わりとすんなりと wsbuilder がビルドできるところまでは進んだ。
早速、起動したのだが、待てど暮らせど起動しない。数分待つと起動するようだが、実用に耐えないな・・・

原因を調べようと ddd で追いかけようにも Interrupt ボタンで停止してくれない。
ブレークポイントがうまく設定できないソースがあったので、ステップ実行と・・・情けないのだが printf で原因を突き止めた。

  :

 WSCstring tmp2(finddata->d_name,encoding);
 WSCstring fname;
 fname << name1 << "/" << tmp2;
 int ret = stat(fname.getString(encoding),&sret);

  :

起動時に name1 に "/" が格納されて上の処理が走るのだが、stat に対して "//ファイル名" のような文字列が渡されてしまう。windows 環境では // はサーバー名の指定になってしまうので、サーバでも探しに行って時間がかかっていたのかも。

上記のような部分を対策したらすぐに起動するようになった。
起動はしたのだが、xpm の画像が表示されていない。原因は dlopen, dlsym で共有ライブラリのシンボルをコールしていたため。直接コールするように変更して無事画像も表示された。
(対応したのは xpm のみで png と jpeg は放置。使わないからな)

とりあえず、wsbuilder が走れば、WideStudioで組んだアプリも動くだろう。

最新の画像もっと見る

コメントを投稿