none
yamy をコンパイルするには?

    質問

  • yamy というキーバインドを変更するアプリケーションをコンパイルして動作確認したのですが、visual studio (community 2015) への取り込み方が分かりません。

    お分かりの方がいらっしゃったら、お教え願えないでしょうか。





    OS を windows 10 version 1607 にクリーンインストールした際、久し振りに環境整理していたら、下記アプリケーションでエラーが出てしまいました。

    yamy / Yet Another Mado tsukai no Yuutsu Fork
    OSDN
    https://ja.osdn.net/projects/yamy/

    原因は、設定ファイルの文字コードのようで、
    ログイン後の言語環境を「日本語」にするとエラーは出ませんが、「英語」にすると質問の末尾に示すエラーが出ます。

    yamy 同梱の設定ファイルの文字コードを調べると、以下の通りでした。

    japanese-cp932-dos

    英語環境で設定ファイル読み込み時のエラーが出ない文字コードを調べたところ、以下の結果でした。

    ✕ utf-16le-with-signature-dos
    ○ utf-16le-dos

    ✕ utf-16be-with-signature-dos
    ✕ utf-16be-dos

    ✕ utf-8-with-signature-dos
    ✕ utf-8-dos

    「BOM 無し UTF16LE」のみでエラーは出ませんでしたが、実際使ってみると、windows 全体で全くキー入力ができなくなってしまいました。


    メンテナンスされなくなって久しいアプリケーションなので、今後の修正が見込まれません。

    そこで、遊びを兼ねて原因を探ってみようと思い立ったのですが、visual studio や c/c++ 自体をかなり久しく扱っていないため、全く分からない状態に戻っています。

    yamy のソースは下図のようになっていますが、「visual studio community 2015」で動作確認までできるようにするには、どう読み込めばいいのか、お教え願えませんか?







    クリーンインストール前は何故問題が出なかったかというと、

    windows 7 から windows 10 へのアップグレイド時に 7 からの設定が引き継がれたみたいで、英語環境下で使っていた 7 から 10 に移り、10 の中で日本語環境に切り替えても、下記画像の通り、システムは日本語環境なんだけど、表示は英語で処理されていたみたいなのです。初期の不具合かな?




    本来は下図のように、リスト一番目の言語が「Windows display language」として処理されているのでしょうが、上図では日本語がリスト一番目にあるのですが、説明文は「Windows display language」ではなく「Language pack installed」となっていました。



    システムはリスト一番目の日本語なんだけど、表示は英語のまま、というおかしな状態ができていたのだと思います。

    改めてクリーンインストールしてしまったら、設定通りに正しく表示が行われるようになり、yamy からエラーが出てしまった、と。

    でも、その変な設定が可能だったのなら、レジストリの何処かをいじったらそれが再現できるんじゃないか?と思いましたが、再現できず。

    なるべく windows は英語環境下で作業するのを望んでいますので、yamy を修正してみるか、と思ったのでした。





    エラーメッセージは以下の通りです。

    ------------------------------------------------------------
    YAMY 0.03 (UNICODE)
      built by gimy@i7 (Sep 19 2009 00:12:55, Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00)
    started at Monday, January 9, 2017 10:17:19 AM
    H:\bin\yamy\yamy64
    ------------------------------------------------------------
    log begins at Monday, January 9, 2017 10:17:22 AM
      loading: H:\bin\yamy\.mayu
      loading: H:\bin\yamy\109.mayu
    H:\bin\yamy\109.mayu(87) : error: invalid character U+90
    H:\bin\yamy\109.mayu(88) : error: invalid character U+90
    H:\bin\yamy\109.mayu(183) : error: invalid character U+81
    H:\bin\yamy\109.mayu(186) : error: invalid character U+81
    H:\bin\yamy\109.mayu(188) : error: invalid character U+81
    H:\bin\yamy\109.mayu(191) : error: invalid character U+81
    H:\bin\yamy\109.mayu(230) : error: invalid character U+90
    H:\bin\yamy\109.mayu(241) : error: invalid character U+90
      loading: H:\bin\yamy\default.mayu
    H:\bin\yamy\default.mayu(10) : error: invalid character U+81
    H:\bin\yamy\default.mayu(11) : error: invalid character U+81
    H:\bin\yamy\default.mayu(12) : error: invalid character U+81
    H:\bin\yamy\default.mayu(13) : error: invalid character U+81
    H:\bin\yamy\default.mayu(39) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(40) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(41) : error: `Up': invalid key name.
    H:\bin\yamy\default.mayu(42) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(43) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(44) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(45) : error: `Up': invalid key name.
    H:\bin\yamy\default.mayu(46) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(47) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(48) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(49) : error: `Up': invalid key name.
    H:\bin\yamy\default.mayu(50) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(51) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(52) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(53) : error: `Up': invalid key name.
    H:\bin\yamy\default.mayu(54) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(84) : error: invalid character U+90
    H:\bin\yamy\default.mayu(85) : error: invalid character U+90
    H:\bin\yamy\default.mayu(86) : error: invalid character U+90
    H:\bin\yamy\default.mayu(87) : error: invalid character U+90
    H:\bin\yamy\default.mayu(107) : error: invalid character U+81
    H:\bin\yamy\default.mayu(108) : error: invalid character U+81
    H:\bin\yamy\default.mayu(109) : error: invalid character U+81
    H:\bin\yamy\default.mayu(110) : error: invalid character U+81
    H:\bin\yamy\default.mayu(133) : error: invalid character U+90
    H:\bin\yamy\default.mayu(134) : error: invalid character U+90
    H:\bin\yamy\default.mayu(135) : error: invalid character U+90
    H:\bin\yamy\default.mayu(136) : error: invalid character U+90
      loading: H:\bin\yamy\emacsedit.mayu
    H:\bin\yamy\emacsedit.mayu(16) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(17) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(19) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(20) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(23) : error: `Down': invalid key name.
    H:\bin\yamy\emacsedit.mayu(24) : error: `Up': invalid key name.
    H:\bin\yamy\emacsedit.mayu(50) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(51) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(52) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(53) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(55) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(57) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(59) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(63) : error: `$EmacsMark/cancel': unknown keyseq name.
    H:\bin\yamy\emacsedit.mayu(105) : error: `$EmacsEdit/backward-kill-word': unknown keyseq name.
    H:\bin\yamy\emacsedit.mayu(107) : error: `$EmacsEdit/kill-word': unknown keyseq name.
    H:\bin\yamy\emacsedit.mayu(110) : error: `$EmacsEdit/kill-line': unknown keyseq name.
    H:\bin\yamy\emacsedit.mayu(112) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(113) : error: `$EmacsEdit/transpose-chars': unknown keyseq name.
    H:\bin\yamy\emacsedit.mayu(120) : error: `$EmacsEdit/upcase-word': unknown keyseq name.
    H:\bin\yamy\emacsedit.mayu(121) : error: `$EmacsEdit/downcase-word': unknown keyseq name.
    H:\bin\yamy\emacsedit.mayu(127) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(128) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(130) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(131) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(132) : error: `$EmacsMark/cancel': unknown keyseq name.
    H:\bin\yamy\emacsedit.mayu(133) : error: `Down': invalid key name.
    H:\bin\yamy\emacsedit.mayu(134) : error: `Up': invalid key name.
    H:\bin\yamy\emacsedit.mayu(137) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(138) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(141) : error: `Left': invalid key name.
    H:\bin\yamy\emacsedit.mayu(142) : error: `Up': invalid key name.
    H:\bin\yamy\emacsedit.mayu(143) : error: `Right': invalid key name.
    H:\bin\yamy\emacsedit.mayu(144) : error: `Down': invalid key name.
    H:\bin\yamy\emacsedit.mayu(157) : error: unbalanced `if'.  you forget `endif', didn'i_token you?
    H:\bin\yamy\default.mayu(166) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(203) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(204) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(205) : error: `Up': invalid key name.
    H:\bin\yamy\default.mayu(206) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(207) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(208) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(209) : error: `Up': invalid key name.
    H:\bin\yamy\default.mayu(210) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(434) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(437) : error: `$WaffleMark/cancel': unknown keyseq name.
    H:\bin\yamy\default.mayu(481) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(482) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(484) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(485) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(486) : error: `$WaffleMark/cancel': unknown keyseq name.
    H:\bin\yamy\default.mayu(487) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(488) : error: `Up': invalid key name.
    H:\bin\yamy\default.mayu(491) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(492) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(495) : error: `Left': invalid key name.
    H:\bin\yamy\default.mayu(496) : error: `Up': invalid key name.
    H:\bin\yamy\default.mayu(497) : error: `Right': invalid key name.
    H:\bin\yamy\default.mayu(498) : error: `Down': invalid key name.
    H:\bin\yamy\default.mayu(519) : error: Unmatched { or \{
    error: failed to load.
    Tasktray icon is updated.




    • 編集済み custar 2017年1月9日 4:04
    2017年1月9日 3:52

すべての返信


  • 1. boost をダウンロード

    https://dl.bintray.com/boostorg/release/1.64.0/source/


    2. boost をビルド

    $ cd boost_1_64_0/
    $ .\bootstrap.bat
    $ .\b2



    3. yamy を取得

    git clone git://git.sourceforge.jp/gitroot/yamy/yamy.git


    4. yamy.props を書き換え

    proj/yamy.props

    - <BOOST_MAJOR>1_56</BOOST_MAJOR>
    + <BOOST_MAJOR>1_64</BOOST_MAJOR>

    <ItemDefinitionGroup>
      <ClCompile>
        ...
      </ClCompile>
      <Link>
        <AdditionalLibraryDirectories>

          ..\..\boost_$(BOOST_MAJOR)_$(BOOST_MINOR)\stage\lib;

    ext_lib$(CPUBIT)\$(ConfigurationName)\lib    

    </AdditionalLibraryDirectories>
      </Link>
    </ItemDefinitionGroup>

    5 . Windows SDK Version 8.1 -> 10.0.15063.0

    全 project に対して。

    6. v120 -> v141

    ./proj/distrib.vcxproj:21:     <PlatformToolset>v120</PlatformToolset>
    ./proj/distrib.vcxproj:27:     <PlatformToolset>v120</PlatformToolset>
    ./proj/makefunc.vcxproj:20:    <PlatformToolset>v120</PlatformToolset>
    ./proj/makefunc.vcxproj:26:    <PlatformToolset>v120</PlatformToolset>
    ./proj/regex32.vcxproj:21:     <PlatformToolset>v120</PlatformToolset>
    ./proj/regex32.vcxproj:27:     <PlatformToolset>v120</PlatformToolset>
    ./proj/regex64.vcxproj:29:     <PlatformToolset>v120</PlatformToolset>
    ./proj/regex64.vcxproj:33:     <PlatformToolset>v120</PlatformToolset>
    ./proj/regex64.vcxproj:37:     <PlatformToolset>v120</PlatformToolset>
    ./proj/regex64.vcxproj:43:     <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy.vcxproj:21:        <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy.vcxproj:27:        <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy32.vcxproj:21:      <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy32.vcxproj:27:      <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy32dll.vcxproj:21:   <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy32dll.vcxproj:27:   <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy64.vcxproj:29:      <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy64.vcxproj:33:      <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy64.vcxproj:37:      <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy64.vcxproj:43:      <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy64dll.vcxproj:29:   <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy64dll.vcxproj:33:   <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy64dll.vcxproj:37:   <PlatformToolset>v120</PlatformToolset>
    ./proj/yamy64dll.vcxproj:43:   <PlatformToolset>v120</PlatformToolset>
    ./proj/yamyd32.vcxproj:21:     <PlatformToolset>v120</PlatformToolset>
    ./proj/yamyd32.vcxproj:27:     <PlatformToolset>v120</PlatformToolset>


    7. vc120 -> vc141

    ./regex32.vcxproj:65:      <OutputFile>...\libboost_regex-vc120-...</OutputFile>
    ./regex32.vcxproj:86:      <OutputFile>...\libboost_regex-vc120-...</OutputFile>
    ./regex64.vcxproj:90:      <OutputFile>...\libboost_regex-vc120-...</OutputFile>
    ./regex64.vcxproj:114:     <OutputFile>...\libboost_regex-vc120-...</OutputFile>

    8. Rebuild

    9. attach to process

    10. setting.cpp

    /*
      _UNICODE: read file (UTF-16 LE/BE, UTF-8, locale specific multibyte encoding)
      _MBCS: read file
    */
    bool readFile(tstring *o_data, const tstringi &i_filename)
    
    
    // load (called from load(Setting *, const tstringi &) only)
    void SettingLoader::load(const tstringi &i_filename)

    ...動かしてみると確認できるが、
    正しく読み込めてないし、正しく処理できてないみたい。




    p.s.
    --
    github や slack などを使ってるので思うのですが、
    ここの書き込みの仕組みはいつの時代のものだ?って感じがします。
    相変わらず使いにくいですね。

    • 編集済み custar 2017年7月22日 6:12
    2017年7月22日 5:53
  • 「visual studio (community 2015) への取り込み方が分かりません。」とのことですが問題点がわかりませんでした。コンパイルはできているわけで、あとはデバッグして原因究明するだけでは?
    2017年7月22日 7:11
  • いや、visual studio での開き方が本当に分からなかったのです。それくらい忘れてた、と。

    少し時間ができたので、中身を調べつつ作業したらコンパイルできました。


    仰る通り、デバッグするだけですが、
    c++ ってこんな書き方したっけ?というくらい久し振りだし、
    なんでこんな書き方してるんだろう?
    などと考え込むのが面倒なので、

    原因が少し分かっただけにして、別法を考えることにしました。
    2017年7月22日 9:37
  • 質問者さんが「別法を考えることにし」たことはわかりましたが、本スレッドについてどうしたいのかが依然としてわかりませんでした。質問内容(これもよくわかりませんが)が解決したのであればその旨を明記すべきですし、質問を続けたいのであれば、質問内容を明確にすべきです。
    本スレッドに興味がなくなり放置する、というのは質問者として無責任すぎるので、そのような選択はすべきではありません。
    2017年7月23日 0:47
  • 助言ありがとうございます。

    visual studio に取り込めて、コンパイルまでできたので、本件は解決しました。

    スレッドを閉じる処理が見当たらないので、本投稿で終わりという意味にしたいと思います。
    2017年7月23日 3:06
  • yamy のソースをいじらなくても、ログイン後の表示言語を「英語」にして、yamy が動くようにできました。
    設定手順は以下の通りです。



    私の環境では、アカウント作成直後は上記 ① のような言語でした。
    上記 ② をクリックして以下の画面を開きます。



    上記 ③ をクリック。
    下記画面 ④ にて余計な言語を削除し、日本語のみにします。



    続いて、上記 ⑤ をクリックして以下を開き、
    「Windows の表示言語」を「English (United States)」(⑦) に変更します。



    ここで一旦ログオフさせられますが、再び前記 ④ の画面を表示させ、
    前記 ⑥ をクリックして以下を開きます。



    上記 ⑧ を「Japanese (Japan)」に変更。
    下記 ⑨ の画面に戻り、変更されていることを確認。 



    更に下記 ⑩ の画面に戻れば完了です。 




    2017年9月25日 4:04