ということで気を取り直して 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で組んだアプリも動くだろう。
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で組んだアプリも動くだろう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます