ようやくビルドが始まった

Build Tools for Visual Studio 2017 (version 15.9)というのをマイクロソフトサイトからダウンロードしてインストールした.ついでにVisual Studio 2017 Community も更新した.この「プラットフォームツールセット」にはv141というバージョンしか入っていないので,すべてのプロジェクトのプロパティでプラットフォームツールセットをv141に書き換えた.これでようやくビルドを開始することができた.

ZelkovaDLLに入っているすべてのCPPファイルはエラーなしでコンパイラを通ったが,以下のエラーが出ている.

>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2729,5): warning MSB3284: タイプ ライブラリ “f10efde4-db94-11d2-b863-289605c10026” バージョン 1.0 のファイル パスを取得できません。ライブラリは登録されていません。 (HRESULT からの例外:0x8002801D (TYPE_E_LIBNOTREGISTERED))

ZelkovaGCのビルドは完了している模様だ.ZelkovaZはレジストリ登録に失敗している.これはおそらく権限の問題と思われるのでIDEを管理者権限で起動すれば解決する.ZelkovaVBのビルドはOCXが登録されていないため失敗に終わった.VSを管理者権限で再起動して試してみよう.「ビルド: 3 正常終了、1 失敗、0 更新不要、1 スキップ」という結果に終わった.エラーは0,警告7が出ている.VBで「参照コンポーネント ‘ADODB’ が見つかりませんでした」という警告が出ている.付随して

タイプ ライブラリ “ADODB” のラッパー アセンブリが見つかりません。次のことを確認してください。(1) COM コンポーネントが正しく登録されている。(2) ターゲット プラットフォームのビットが COM コンポーネントと同じである。たとえば、COM コンポーネントが 32 ビットの場合、64 ビットのターゲット プラットフォームは使用できません。 

  とあるのでOCXが登録されていないのではないだろうか?いや,出力から見ると登録は完了しているように思われる.DLL,GC,Zの3つのコンポーネントはすべてWin32でビルドされているが,VBにはAny CPUという選択肢しかない.VBのプロパティではターゲットCPUはx86になっている.VBのプロパティ→参照には「ゼルコバの木系図エンジン for WIN32」というのが入っている.この名前はZelkovaZ.idlファイルの helpstring として定義されている.Form1.vbが開けないので参照関係が通っていないことは間違いない.一度ここまでのところをバックアップしてから考えることにしよう.

VBの参照マネージャーで見ると系図エンジン for WIN32のバージョンは3.0となっている.これを3.1に変えてもう一度ビルドしてみよう.参照マネージャーには3.1が現れたが,3.0も残っている.この2つは連動していて,3.0のチェックを外すと3.1のチェックも落ちてしまう.(これはおそらく同じuuidを使っているためと思われる)VBのプロパティ→参照には3.1が入っている.「ツールボックスアイテムの選択」パネルには「Zelkova コントロール」の名前で表示される.このアイテムを選択し,一度削除して追加し直したForm1.vbに貼り込むと枠が表示された.ソリューションをリビルドしてみよう.

動作がかなりおかしい.ビルドが終了した途端にVSが再起動されてしまう.ビルド時に「 warning : パス ‘d:\zelkova\debug\zelkovadll3.dll’ へのアクセスが拒否されました。」という警告が出ている.ビルド完了までは進んでいるが,マウスを動かしただけで再起動になってしまうようだ.debugフォルダの中を手操作で空にしてから再起動→リビルドで正常動作に戻ったが,VBのビルドには失敗している.⇒おかしい.今度はツールボックスが空っぽになっている.⇒このボックスの中身はVBファイルを選択したときしか表示されない.

「タイプ ライブラリ “ADODB” のラッパー アセンブリが見つかりません」というエラーが出ている.ADODBというのはMicrosoft ActiveX Data Objects のことと思われるが,現行ではVBからADO 2.5 Libraryというコンポーネントが参照されている.このライブラリには複数のバージョンがあるので,バージョンの不整合でエラーになっている可能性が考えられる.⇒試みに最新の6.1 Libraryを参照するように設定変更してみたところ,エラーは解消してビルドできるようになった.⇒実行もできた.ひとまず難所は越えることができた.

ランニングテスト用のサンプルが必要だ.⇒まず,添付ファイルを開いてみることにしよう.懐かしい図面が出てきた.これが出せなければゼルコバの木の立つ瀬はない.日本の系図文書にはあまり出てこないが,西欧の系図にはよく見られるパターンだ.これを無条件で描画できる系図ソフトはまだないのではないかと思う.

image

親族呼称図:本人から上流と下流のそれぞれにつき4親等まで表示した図.

image

タモリさんちの超複雑な家系も理想形で表示できている.

image

天皇家系図を開いてみよう.

image

仁徳天皇系と雄略天皇系の間に広いギャップがあるが,下流ではタイトになっているのでこれでよいのだと思う.一つ描画上の欠陥がある.

▲大草香皇子の頭部に父仁徳天皇からの(垂直)連結線が入っていない.仁徳天皇からは曲がって草香幡梭皇女に垂線が下りているのでレンダリングに抜けがあるのだろう.

一応動作するバージョンを確定することができた.ともかく何かやり損なう前にバックアップを取っておこう.

いや,これは開発環境のEXEではなくインストールされた版かもしれない.昨日はインストールされたバージョンはないと書いたが,プログラムと機能を見ると2019/08/10にインストールした2.1.0.020というのがある.ZELファイルのアイコンを叩いて開いているから,起動したのはこの版だ.開発環境上にあるのは2.1.0.010でこの版よりはかなり古い.リリース日付は2019/01/11.確かにこの版ではタモリんちも少し偏芯した図になってしまう.天皇家ではもっと露骨にあちこちで垂線が途切れるような欠陥が露呈している.ともかく,ここから出発だ.

▲アプリ終了時に若干のメモリリークが検出されている.

GCとZではインクリメンタルリンクがオフになっている.そうなっている理由はよくわからないが,オンに切り替えておこう.

ZelkovaCtrl.cppのコンパイルで以下のエラーが出ている.「ネイティブ関数としてコンパイルされました 非 clrcall 仮想呼び出しサンクは、ネイティブとしてコンパイルする必要があります」

ZelkovaZのプロパティでは/clrオプション(共通ランタイムサポートを使用する)が設定されているが,MESSAGE_MAPとDISPATCH_MAPには仮想関数が含まれるためネイティブとしてコンパイルされているように思われる.共通言語ランタイムサポートプロパティを変更して「使用しない」とすればこのようなエラーは解消する.この設定変更を行っても動作には変化はないように思われるので,暫定的にこれで進めてみることにする.⇒おかしい.警告C4793は止まっていない.止まったと思っていたが,勘違いだったのだろうか?設定は戻しておこう.

これまでは感じなかったが,コンパイルがやけに遅く感じる.もっと速いマシンが欲しくなった.incredibuildという分散処理が導入されているようだが,使えるだろうか?なんとこれはイスラエル発のソリューションだ!無料というのは評価版の話で製品版14万円もする…

ビルドメニューにソリューションでコード分析を実行というコマンドがあるので使ってみた.すべてVBに関するものだが100個以上のエラーが出た.直ちに対処するのはちょっと難しそうなので保留とする.リリース版もビルドできたが,ちょっと気になるWARNINGが出ている.

WARNING: カルチャ ‘ja-JP’ を項目 ‘Visual C++ “14” Runtime Libraries (x86)’ に対して一致できませんでした。カルチャ ‘en’ を使用します。

VS2017をダウンロードしたとき英語版をインストールしてしまったのだろうか?もちろんメニューその他の文字列が英語になってしまうという訳ではないのだが,何か不都合があるだろうか?ツール→オプション→国際対応の設定は日本語になっている…カルチャというのは日付の表記などに影響しそうだが…msiができているのでともかくインストールしてみよう.アンインストールしないで実行してみる.おかしい.元のアプリが立ち上がってきた.アイコンは確かにいま作られたものだが,参照しているEXEの位置がわからない.ZELKOVA TREE 2019が2つ作られている.アプリの更新手順を踏まなかったかもしれない.バージョンを上げてProductCodeを更新する必要がある.今度はできたようだ.

さて,これで一応の出発点は固まったところだが,バージョンの関係を少し考えておく必要がある.インストールされていた版は2019/08/10リリースの2.1.0.020で,現在手元にあるのは2019/01/11リリースの2.1.0.010だ.内容的にもかなりできが悪い.

ZELKOVA_2020にZELKOVA 2020 仕掛りというのがあるので試してみたい.いや,この日付は2019/01/17だからさほど新しいものではない.2019年8月のパッケージはいくつかあるが,インストーラまで進んだ形跡がない.公式リリース版の最新は2018-07-13だからかなり古い.これで見るとインストールされていた2019/08/10リリースの2.1.0.020がとりあえず最上なのではないだろうか?DドライブにZELKOVA2019_2019-08-09というパッケージがあり,ここに入っているのはおそらく2.1.0.020と合致するものと思われる.

2019-08-10のログは「最新の安定版を確保する」というタイトルで安定版とされているのは①V2.0.2.229_R2018-10-07と②V2.0.1.978_R2018-03-30だ.8月10日というログは2本ある.うち,1本は9日の分と思われる.この日は2019-02-07の安定版候補をビルドしている模様だ.ただし,障害サンプル集のオープンテストでSUWが出ている.描画上のゴミも出ているとされる.

このフォルダに入っているZelkovaTreeSetup.2.1.0.020.msiをインストールしてみることにしよう.ダメだ.開けない.

image

VS2017への移行は10日より後に実行されているので,おそらくVS2005ないしVS2015でビルドされたものだろう.であるとすればVS2017への変換を施したバージョンは現行のものしかないということになるのではないだろうか?現行版はDLLのソースファイルで見ると2019-01-11が最終修正日であるように思われる.一方,2.1.0.020の方は2019/08/10に2本修正が入っている他は,2019/02/06が最終日となっている.2018/02/10には「規準Nodeの配偶者が枠外に出てしまう問題」に掛かっているのでこの日付が後戻りできる限界線であるとすれば,かなりそれに肉薄しているということになり,これを採用することは許容できるように思われる.

VS2017への移行で一番問題になるのはおそらくVBのモジュールと考えられるのでその部分だけを最新版で差し替えるということも考えられるのではないだろうか?VBのコードはほとんどサービス機能に関わっているのでデバッグによる修正はほとんど入っていないと見てもよいのではないかという気がする.いや,日付で見るとそうも言えないような感じになっている.CardBox.vbの修正はどちらも2019/01/07だ.どうもわからなくなってきた.

「オブジェクト配列を廃止してオブジェクトの配列に切り替える」は2019/08/14近辺のはずなのだが…確かにZELKOVA2018_2019-08-14辺りになるとその辺りの修正が入っている気配がある.明らかに現行版にはこの修正は入っていない.つまり,VB6のコードがまだ残っている.しかし,ここまで来るのにそのことはまったく問題にならなかった.どういうことだろう?もし使えるのならオブジェクト配列の方がずっと使い勝手がよいことは確かだ.マイクロソフトが方針変更して対応修正しているのだろうか?デザイン画面下部のアイコンもデザインが変わっているので対応が変化したということは考えられる.

もしそうであるとすれば,ともかく最新の版を選んでポーティング可能だということになるのではないか?この時期で言えば最終ログは2019-03-09で規準Nodeの配偶者の問題に掛かる2018/02/10だから,この間に残っているパッケージが最新ということになる.仮に2018/02/10まで戻ったとしても,最新版が2019/03/09なのだからその間1ヶ月ということになり,なんとかなりそうな気がする.であるとすれば,この時期にamory氏に送った版がなくてはならないのだが…それが2.1.0.020ということだろうか?

amory氏とのやり取りはメールが残っているはずだからチェックしてみよう.メールに添付してファイルを送ったのは2018/03/07が最終だ.2018/11/20にはネットが復活しているが,そのあとmicroSDで送っていたのではなかったろうか?microSDは封書で送られてきているはずだが,見当たらない.2019/08/03のメールでは「V2.0.0.321、V2.0.0.325、V2.0.0.325、V2.0.1.870を保管しているが起動するとエラーが起きる」となっている.この差し替えは送れなかったのだろうか?2018年の歳末には「まだバグが残っているので「暫定版」を年内にお送りするのも難しいかもしれません.」と書いていて明くる2019年の3月で開発は実質停止してしまうので,送れなかったのかもしれない…

とすれば,やはり2019/08/10リリースの2.1.0.020が最良ということになるのかもしれない.これは実質的には2019/02/06が最終日だ.それより新しいものがあるかどうか探してみよう.これより新しいものは見当たらない.これは多分ZELKOVA2019_2019-08-09と同じと思われる.それより少し古いものとしてZelkovaTreeSetup.2.1.0.017.msiというのがある.開発用パッケージではZELKOVA2019_2019-03-10が最終と思われる.これが動けば内容的には2.1.0.020より新しい可能性もあるが…もう一つ取り上げるとしたら,ZELKOVA2018_2019-08-14だが…これは2015から2017への移行作業途上の仕掛り版だ.この版のベースのバージョンを知りたいのだが…⇒ベースバージョンは2.0.2229と思われる.V2.0.2.229_R2018-10-07というのは残っているが,R2018-10-07では少し古過ぎる.

安定版として保存されている最終版はV2.0.2.143 R2018-08-18だ.本来なら作業したすべての日付のバックアップが残っているはずなのだが,ディスクが逼迫してきたため大胆に整理してしまったのでこれだけしか残っていない.結論的には「再開発スタート版候補」は以下の3通りということになりそうだ.いや,現行版を入れれば4種かもしれない.

  1. ZELKOVA2019_2019-03-10★2.1.017 ほぼ最終版
  2. ZELKOVA2019_2019-08-09★2.1.020 最良版候補
  3. ZELKOVA2018_2019-08-14★2.0.2229 VS2017移行仕掛り版
  4. ZELKOVA_2020-10-12★2.1.012 現行仕掛り版

いずれの版もVS2017で問題なく開ける.ただし,ビルドはまだ試していない.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA