◀ANSI版開発トップへ
  • 3084 64bit版コンパイル/リンク/テスト報告
    • 3085 Re:64bit版コンパイル/リンク/テスト報告
      • 3087 Re2:64bit版コンパイル/リンク/テスト報告
      • 3089 Re2:64bit版コンパイル/リンク/テスト報告
      • 3090 Re2:64bit版コンパイル/リンク/テスト報告 <補足>
        • 3096 Re3:64bit版
          • 3100 Re4:64bit版
            • 3104 Re5:64bit版
              • 3107 Re6:64bit版 見事に動きました
              • 3109 Re6:64bit版 見事に動きました<一部訂正>
  • [3084] 64bit版コンパイル/リンク/テスト報告 KEITA 2003年09月05日 18:33

    と書きますと、何なの? と思われるかもしれませんが、
    諸事情があり64bitアプリケーションを開発せざるを得ない
    ことになりまして、ついでにSAKURAもやってみようかと...

    せっかくなので、そのときの状況を報告しておきます。

    60ヶ所程"#ifdef _WIN64"で修正を挿入、約350個ほどWarning
    がでますが...IA64,AMD64双方とも無事実行モジュールは
    できました。

    IA64上にて実行すると、残念ながらCreateFileMappingで
    エラーで終了するようなので、
    CShareData.cpp内のCreateFileMappingの第一引数を、
    なんとなく、いいかげんな修正ですが、
    0xFFFFFFFF -> 0xFFFFFFFFFFFFFFFF
    に変更して実行すると、運良く?実行できました。
    タスクトレイ?にもサクラエディターのアイコンが無事
    表示されましたが、肝心のエディター画面が表示されない
    ことと、タスクトレイのアイコンをRBUTTONDOWNしても
    LBUTTONDOWNしても、その5秒後ぐらいにタスクトレイから
    消えてしまうという問題があるようです。何が問題そうか
    わかる人がいらっしゃいましたらお教え下さい。

    結局まともに起動できなかったのですが、ワーニングなども
    全て取り去って再テストすれば多少は状況が変わるのかも
    しれませんね。全くダメということも想定されるところの
    ものでしょうから、まあまあ本気でやれば乗り切れるのか
    もしれません。

    テキストエディターを64bitアドレッシングにして、どこが
    良くなるというものでもないかもしれないので、程々な
    ところでトライは止めようと思いますが...

    もし必要でしたら、修正個所やワーニング一覧、修正ソース
    などもアップロードさせていただきます。と言っても必要な
    人はいないですよねぇ(^^;

    ※名前「けいた」->「KEITA」に変更します。
    • [3085] Re:64bit版コンパイル/リンク/テスト報告 wmlhq 2003年09月06日 10:37

      ▼ KEITAさん
      > 0xFFFFFFFF -> 0xFFFFFFFFFFFFFFFF
      > に変更して実行すると、運良く?実行できました。
      これはINVALID_HANDLE_VALUEですよ。余分なキャストをするな、定数を埋め込むなって新人に言ってるんですが、守れない輩がいるようです。この前もNULLとINVALID_HANDLE_VALUEを間違える人がいて苦労しました。

      > タスクトレイ?にもサクラエディターのアイコンが無事
      > 表示されましたが、肝心のエディター画面が表示されない
      > ことと、タスクトレイのアイコンをRBUTTONDOWNしても
      > LBUTTONDOWNしても、その5秒後ぐらいにタスクトレイから
      > 消えてしまうという問題があるようです。
      p[-1]のようなマイナスの添え字はだめらしいです。UINT_PTRなどの型もご勉強ください。

      Porting Issues Checklist (Kernel-Mode Driver Architecture Windows DDK)
      http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/other_66cn.asp?frame=true

      General Porting Guidelines (64-bit Windows Programming Platform SDK)
      http://msdn.microsoft.com/library/en-us/win64/win64/general_porting_guidelines.asp?frame=true

      The New Data Types (Kernel-Mode Driver Architecture Windows DDK)
      http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/other_5btz.asp?frame=true

      > もし必要でしたら、修正個所やワーニング一覧、修正ソース
      > などもアップロードさせていただきます。と言っても必要な
      > 人はいないですよねぇ(^^;

      そんなことありませんよ。これから64bit時代が来るんですから。私も互換性の研究をしているので、ぜひとも参考にしたいです。
      • [3087] Re2:64bit版コンパイル/リンク/テスト報告 げんた 2003年09月06日 12:55

        ▼ wmlhqさん
        > これはINVALID_HANDLE_VALUEですよ。
        早速直しました.

        以下余談

        >余分なキャストをするな
        const char*をLPSTRでキャストしてstrcpyするやつとか....
        CStringの空文字列が化けたりして(汗
      • [3089] Re2:64bit版コンパイル/リンク/テスト報告 KEITA 2003年09月06日 21:56

        とりあえずですが、
        e-groupの共有フォルダ : Developer : Source の
        sakura64_diff_core.lzh でアップロードしておきました。

        8月20日版に対して修正したものだけです。
        詳細は、sakura_core内の
        README.TXT
        DIFFLIST.TXT
        WARINIG.TXT
        をご参照下さい。

        ※32bit版でも副作用の無い修正をしたつもりです。

        ※アドレス幅が倍になっていることもあり、WARNINGは、
        あえて全て残すようにしました。エラーよりむしろ
        WARNINGの修正がくせものだろうということで...
        全体像をつかんでいる方々に見ていただければ幸いです。
      • [3090] Re2:64bit版コンパイル/リンク/テスト報告 <補足> KEITA 2003年09月06日 22:18

        書き忘れました。補足ですが、

        DIFFLIST.TXTをご参照いただければわかりますが、
        時々空白やTABを削除したり行を削除するような
        修正が入っています。これは特にAMD64向け版
        コンパイラのエラーを回避しようとした最小限の
        修正なのですが、ほんとうの原因、エラーの分岐点
        は判っていません。
        • [3096] Re3:64bit版 もか 2003年09月07日 16:53

          >修正なのですが、ほんとうの原因、エラーの分岐点は判っていません。
          *オリジナル
          pSApp = ( CEditApp* )::GetWindowLong( hwnd, GWL_USERDATA );
          *64Bit版
          pSApp = ( CEditApp* )::GetWindowLong( hwnd, GWLP_USERDATA );
          となっていますが、
          pSApp = ( CEditApp* )::GetWindowLongPtr( hwnd, GWLP_USERDATA );
          でなくて大丈夫でしょうか?
          同様に、SetWindowLongPtrも。
          興味はありますが、実機が無くてテストできていません。

          >肝心のエディター画面が表示されないことと、
          >タスクトレイのアイコンをRBUTTONDOWNしてもLBUTTONDOWNしても、
          >その5秒後ぐらいにタスクトレイから消えてしまう
          という部分はこれで直るかもしれません。
          • [3100] Re4:64bit版 KEITA 2003年09月07日 23:53

            アドバイスありがとうございます。
            早々、いろいろと試してみましたが、
            GetWindowLongPtr,SetWindowLongPtr に
            変えても症状は同じでした。

            ちょっと、追っかけてみたのですが、
            void CEditWnd::CreateToolBar(void)の
            CreateWindowExでなぜか返ってこないようです。

            まあ、ぼちぼちやって見ます。
            また何かありましたらご指摘下さい。
            トライしたいと思います。
            • [3104] Re5:64bit版 もか 2003年09月09日 14:32

              ▼ KEITAさん
              >ちょっと、追っかけてみたのですが、
              >void CEditWnd::CreateToolBar(void)の
              >CreateWindowExでなぜか返ってこないようです。
              さっそく、トライしてもらったようで、ありがとうございます。
              KEITAさんのソースを元に適当に修正してみました。
              可能な限り条件コンパイルをやめコードを共有するように書き換えました。
              MSDN付属のコンパイラを使った実行ファイル(2MB超)は公開してはまずそうなので、
              ソースの差分をe-Groups/Junkにssrc_2003-09-07win64.zipとしてアップロードしておきます。
              IA-64機をお持ちでコンパイラがある人は、時間があるときにでも、お試しください。

              以下修正内容
              ・::InitCommonControls() を一回も呼び出していない問題を修正
               ツールバーのCreateWindowEx問題がなおるかも。
              ・明示されたキャストでerrorもwarningも出さずに値が失われている場所をある程度修正
               把握しきれません。まだあるかも
              ・API/コールバックプロシージャの型修正
              ・64bit版では構造体のサイズ代入を本来のsizeof()の値に変更
               サクラでは、Win95/NT救済のために値を決め打ちしていた部分があります。
              ・Set/GetWindowLongPtrと、拡張ウィンドウメモリの修正
              • [3107] Re6:64bit版 見事に動きました KEITA 2003年09月10日 10:07

                早々のパッチあて、ありがとうございます。

                まずは第一報ですが、64bit版サクラエディター見事に
                動作いたしました。なんとなく感動を覚えました。
                それから、つくずくオープンソースの凄さを見た感じが
                します。

                十分なテストは行えていませんが、とりあえずキー
                マクロの記録保存再生テストはOKのようです。
                この状況からすると、あとは大きな問題はないのかも
                しれませんね。

                ひとつ確認ですが、このdiffは、8月20日版に対する
                差分ですよね。この差分を当てて、さらに再度、先の書き
                込みのINVALID_HANDLE_VALUEを指定しなおすと、うまく
                起動できました。(diff/patch慣れてないもんだから、
                ちょっと手間取りました。0d0a改行入れたり...)

                IA64上では32bitアプリケーションはソフトエミュレー
                ションをかけるので若干レスポンスが悪くなるのですが、
                これでスッキリしそうです。

                AMD64(Opteron/Athlon64)あたりは、十万円強で実機も
                手に入りそうですから、徐々にテストされる方々も増えて
                くるかもしれませんね。
              • [3109] Re6:64bit版 見事に動きました<一部訂正> KEITA 2003年09月10日 16:12

                上の書き込みに訂正です。

                 9/7版が公開されていたのですね。つまり9/7版からの差分ということ
                だったわけですね。ちょっと回り道していたみたいです。(^^;

                 色々と操作してみましたが、エミュレーションのオーバーヘッドが
                ないためか大変快適(精神的な問題?)です。

                 それから64bitWindowsとの兼ね合いの問題で、たぶん本体の問題では
                ないものと思うのですが、

                通常(32bit)のサクラエディターをインストーラーでセットアップ後、
                64bitのサクラを"Sakura.exe"の名称で起動しようとすると、

                「このアプリケーションの構成が正しくないため、アプリケーションを
                開始できませんでした。アプリケーションを再度インストールすること
                により問題解決する場合があります。」

                というメッセージダイアログが出て起動できないようです。

                 しかし"Sakura64.exe"のように別名にして起動する場合は、問題なく
                動作することと、一度アンインストールしてからであれば、64bit版の
                "Sakura.exe"の名称にしたものを起動する場合も問題は出ません。

                 ということから、OSのどこか? でWIN32アプリかWIN64アプリかの判定を
                行っているところがあるのかなと思ったのですが...いずれにせよ
                大した問題ではないと思いますが、とりあえず報告まで。