| 
    
     |  | ▼ひよひよさん: 
 >ということですが、CrystalCPUID.exe だけ最適化でも OK だったりしませんか?
 両方の最適化をOFFにしないとダメです。
 
 >なんにせよ、次回リリースからは最適化オフで出したいと思います。
 個人的には最適化ON/OFFの両方を公開する方が良いと思います。
 OFFバ〜ジョンは頻繁にバ〜ジョンアップしないで確認用とか。
 
 スタックが狂っているようなので原因を考えると
 ・アセンブラでPUSH/POP等を間違っている。
 ・呼び出し規約の_stdcallと_cdeclが間違っている。
 
 後者を疑って/Gz(強制 _stdcall使用)を試しました。
 CrystalCPUID.exe は libpng の仕様でビルド失敗。
 SysInfo.DLL は /Gz を通過したので実行してみました。
 
 結果は起動中に「ページ違反」が発生。
 アドレスがいつもの落ちるアドレスと同じだったので
 もしかしたらこれが原因かも知れません。
 
 過去に私も libpng を使った事がありますが
 ファイル処理で関数ポインタを使う方法があります。
 このへんで呼び出し規約を間違ったりとか…?
 
 libpng のソ〜スを持ってきて -DPNGAPI __stdcall で
 ビルドして回避できないかと考えたりします。
 
 さらに pcidll.c の initialize() の
 char path[MAX_PATH];
 
 これだとパスが245文字以上のフォルダで実行されると
 path[] にはファイル名も入るのでバッファが
 オ〜バ〜フロ〜してしまう可能性があると思います。
 (ファイル名が固定なので確立はかなり低いですが…)
 
 ではでは。
 
 
 |  |