飴屋

2006年1〜4月の日記

2006/4/30

GWはいかがお過ごしでしょうか。前の日記で書いた日本語のパス名のファイルが
ofstreamで開けない件について、調べたことをまとめておきます。
なんでもofstreamはVC++2005からファイル名を内部でワイド文字列に
変換するとかなんとかで、あまり正確に把握できていないのですが、
ロケールの設定をしてやることで問題を回避できるそうなんです。
多分、ユニバーサルな環境でPP3アイテムビューワーを動かす人は
そうはいないと思うので、以下のようなロケール設定で問題を回避しました。

setlocale(LC_ALL,"Japanese");

プログラムの頭で設定してます、私は。
この結果、アイテムイメージの保存とワープ先イメージの保存の機能が
日本語パスに対してもうまく機能するようになりました。
ここで、一旦リリースかな。
なんか簡単に付加できそうな機能があったら、くっつけたいけど。
せっかくダウンロードしなおしてもらうんだし・・・。

2006/4/28

エラーの調査中。書き忘れてましたが、アイテムイメージを書き出そうとしたり、
ワープイメージを書き出そうとしたりすると、正常に書き出されません。
ofstream周りがVS.NETから大きく変更されたようなのですが、
そのせいかもしれません。

ofstream fout(FileName,ios::in|ios::out|ios::binary);

こんな感じでファイルを開こうとしてますが、

fout.is_open()

↑をチェックすると、正常にファイルが開けていないんだそうな。
ちなみにbcc時代には何の問題もなかったのです。
コンパイラ乗り換えてコードはセキュアになったはずですが、
細かい点で新たにバグが生まれてしまいました。失敗、失敗。

イメージの書き出しをしたい場合は、申し訳ありませんが、ver.1.5xを
使ってください。
プラグインの方も同じ理由で開発停滞中です。重ね重ね申し訳ないです。

(追記)
とりあえず、一つ原因発見。ofstreamに渡すファイル名に
日本語が入っている場合、問題あり。

2006/4/26

プラグインを作成していたら、PP3アイテムビューワー本体の方に
バグを発見してしまった。これは直さないとなぁ。
でも、いくつか実験してみても直らない。
どうしよう。

ゴールデンウィーク返上でPCに向かって作業することになるのかな。
でも、PCに向かっててもわからないタイプのバグっぽいし、
本を読んで勉強しなくちゃかなぁ。
私のような独学プログラマは基礎がなってないのが、
たまに大きく響くときがあります。

原因を切り分けると「メモリ」関連か、「リンカ」関連のどっちかなはず。
どっちも臭い場合、どっちから攻めようか攻めあぐねてしまう。

「メモリ」だよね、やっぱり。(自問自答)

2006/4/20

プラグインの更新が滞ってまして申し訳ありません。
少しまた、忙しくしております。

全然関係ないのですが、最近Yahoo!オークションをはじめてみました。時代の波に少し遅れて乗ってます。ただ単に出品すれば売れるっていうわけでもなさそうで、不用品の処分にピッタリなんて宣伝文句は妥当でないかななんて思いました。中々、奥が深いものみたいです。興味のある方は上のリンクの方にアクセスしてみてください。変なものばかりかもしれませんが。

2006/4/16

先日、ユーザの方からプラグイン利用時のエラーメッセージの報告をいただきまして、
エラーの原因調査に大変役立ちました。(感謝です。)
調査を進めていてとりあえずわかったことは、bccで作ったDLLファイルと
vc++2005で作ったDLLファイルとではシンボル名が変化するってことでした。
前者はアンダースコア(_)が関数名の前につき、後者はついていないのですね。
シンボル名チェックとかしてなかったので気づかなかった。
で、その辺りを修正して、とりあえず作成した「backup.dll」を
使用すると今度は「Access violation writing location...」とかいう
エラーが出ました。アクセス違反かぁ。
sprintf_s関数で日付に応じたフォルダ名を生成しているところですね。
なんだろ。今日中にリリースできるかなぁ。

(追記)・・・と思ったら、一つ前の行でエラーが起こっていた模様。
現在時刻の取得の際にtm構造体のポインタを使っている箇所があるのですが、
localtimeをよりセキュアなlocaltime_sに書き換えた際に、ポインタに実体が
付かなくなったらしい。(警告が出ていたのに気づかなかった。)
これで今日中にリリースできるかな。

2006/4/13

PP3アイテムビューワーver.1.60の正式リリースを終えて、
ホッと一息。というのも束の間、ver.1.60用にプラグインを
コンパイルし直さなければなりません。
よりセキュアなコーディングにして安定性を高めようと思っているのですが、
backup.dllを作成したところで一つ問題が発覚。プラグインを読み込む側
PP3アイテムビューワー)の方に読み込み時におかしな挙動をしている
部分を発見しました。

原因はWindows APIにあるようなのですが、意味不明なことこの上なしです。
FindFirstFileで取得したファイル名の頭に四バイトのヌル文字が入っているのでした。
それはすなわち空の文字列と同義なわけで、正常にプラグインの名前を認識
できなくなっています。

申し訳ないことですが、プラグインと一緒にver.1.61をリリースすることに
なりそうです。原因調査中。

2006/4/9

先日アップロードしたβバージョンに対して、ご報告いただきありがとうございました。
うちでは開発環境で動作検証もしているので、他の人とはエラーメッセージも
異なるものが表示されているみたいです。これをヒントにデバッグを進めていきたいと思います。

今日はとあるテーマパークで写真を撮ってきました。
これを加工して何か作ってみようと思ってます。
乞うご期待!

2006/4/7

PP3アイテムビューワーver.1.60のβバージョン>http://hp.vector.co.jp/authors/VA040951/soft/pp3viewer_160b.lzh]]をリリースしました。詳しいことは開発進捗に書きましたが、ちゃんと動くものではありませんので、あしからず。

Just In Timeデバッガに関連するメッセージが出るのですが、
あまりよく理解できていない領域なため、情報収集中です。

2006/4/5

サイトを移転しました。三月末にレンタルホストが数日間停止してしまい
将来的に少し心配になったのがきっかけでしたが、以前から自分のアイディアを
メモする場所があったらいいなとも思っていたので、いいきっかけに
なりました。

旧来のコンテンツをそのまま移動して、少し手直ししたのですが、
リンク切れ等お気づきの点がございましたら、掲示板にご報告ください。

2006/4/1

http://www.postpet.so-net.ne.jp/movie/

PostPet映画化おめでとうございます。
GiantPeachとモモをかけているようです。
毎年この日は楽しいですね。

2006/3/27

PP3Viewer本体のコンパイルが通る。VC上から呼び出すとちゃんと動いている。
でも、Releaseフォルダにできあがったモノを実行すると意味不明な
ダイアログボックスが出て落ちる(ことがある)。

エラートラップしようとしたら、pp3obj.dllのDebug版がビルドできない。
また、リンカの問題らしい。msvcprtd.lib関連の問題のようなのですが、
これをどう直せと・・・?LNK2001エラーが出る。シンボルが解決できないって。
Release版は問題なくリンクできているのになぁ。

2006/3/25

一ヶ月間、エラーと戦っていました。
メモついでに詳細を記載。

BCCのプロジェクトをVC++2005Expressに移行する作業において、

  1. 構成を変えず、ソースコードをそのままペースト
  2. iostream関連のエラーが出たので、一つ一つ消す。

    (iostream関連の仕様変更があったらしい。)

  1. コンパイルを通るも、リンカエラーが頻出する。

    (Additional Dependency(LIBファイル)の型が合わない!?)

  1. zlibを再コンパイル。VC8のプロジェクトは「...\zlib123\contrib\vstudio\vc8」ここらへん。(ライブラリのファイル名は「zlibwapi.dll」に変更された。)
  2. libjpegの再コンパイル。コンソールからvc用のmakefileを使用してコンパイル。

    (libjpegのCのコードが混ざらないようにC++でラップして、外部ライブラリが出来上がる。)
    (コンソールでVC++付属のバイナリを実行する前には、要「...\Microsoft Visual Studio 8\VC\bin\vcvars32.bat」)

  1. いくつかリンカエラーが残り、ここで何週間もドツボにはまる。コードをいろいろいじっても意味はなかった。LIBファイルとINCLUDEファイルの検索先の設定に問題があった模様。検索順序をいろいろ変更していたら、いつしかリンカが通るようになった。

    おかげでdumpbinのことに詳しくなる。リンカのオプション/verboseも初めて使用した。

  1. ビルドは成功したがwarningがたくさん発生する。strcpy、strncpy、strcat、strtok、ltoaあたりの関数がセキュアじゃなかったらしい。とりあえず「_s」をつけてみる。
  2. 警告が消えて、バッチリ!

IDEのこと不勉強だったな、と実感しました。
上記がpp3obj.dllの話なので、本体とプラグインについても同様の作業が残っている予定です。でも、ゴールが見えてきた感じ。早くバージョンアップして、普通の生活に戻りたい。

2006/2/26

転居が済んで、少し落ち着いてきました。
まだダンボールが山積みです。とりあえず、パソコンのデータが
引越し中に破損してしまわなくてよかった。開発も徐々に再開
していきます。バグフィックスをお待たせしてたいへん申し訳ありません。

2006/2/17

今月の24日に転居が決まりました。転出届を出したり、NTTに電話したり、毎日
やることがいっぱいです。家の中はダンボールの山だし。

プログラムの修正にあまり時間がとれていません。
Visual Studioに開発環境を移行しようとしたら、libjpegのコンパイルがうまくいかなかったり、zlibの関数が呼び出せなかったりと問題が山積みになってしまいました。一つ一つクリアしているところなのですが、ゴールがみえない状況です。

最近、睡眠時間がとれず疲れているのかな。見通しが暗いなぁ。
はやく3月になって欲しい。

2006/2/5

バグ調査が遅々として進展しません。
プライベートでは転居計画が進んでおり、多忙を極めて精神が擦り減ってきているが気がします。

PostPet V3はメールクライアントとして、そんなに使いやすいわけではないと思いますが、これはもう改善される予定はないのかなぁ。だとしたらメールボックスだけ使いやすく改良できないかな、と夢を描いています。
しかし、時間的な余裕が・・・。

あぁ、お風呂に入りたい。

2006/1/21

バグ報告をいただいたので、原因箇所の検出中なのですが、
いくつか叩いても埃が出てこないので、少し困っています。
開発環境が貧弱なこともあって、デバッグが思うように進まない状況です。
このままでは埒があかないので、いっそ開発環境自体を移行してしまおうかと
検討しています。うまくいけば、コンパイラも新しくなるので
バグがとれる以上の効果があるかもしれません。

自分の作ったプログラムは子供のようにかわいいのですが、
段々経費がかさんでくることになりそうで、少し怖いなぁ。

追記:Visual StudioのExpress版が無償ダウンロードできるので、試用中。

2006/1/13

遅ればせながら、あけましておめでとうございます。
寒中お見舞い申し上げます。

プライベートがバタバタしていて開発に集中できない状況に陥ってしまいました。
2006年は早速波乱含みです。

3DCG関連のことを少しお勉強する必要があるので、
いろいろなサイトをまわっています。
3D関連ソフトもちゃんとしたものを一本欲しいのですが、
とてもお高いものなので、なかなか手が出せずにいます。
どうしたものか。

開発日記

Last-Modified