開発機がいつの間にか落ちている

開発機がいつの間にか落ちている.このようなことは時偶起きているが,ロック画面にログインの入力ボックスが出てこない.再起動しても同じだ.⇒Ctrl+Alt+Delで再起動しようとしてみたところ,再起動の代わりに入力ボックスが出てきた.エッジが立ち上がっている.これが原因かもしれない.いつ何時何が起こるか分からないので,バックアップはこまめに,それも外部ストレージにコピーしておく必要がある.

開發用ドライブには現に仕掛りになっているものを残して,すべて開発履歴に移した.それでも100GBのうち,空き領域は33.7GBしかない.Cドライブはもっと逼迫していて18.1GBで赤塗りになっている.xampp関係がCドライブに残っている.⇒バックアップに移動した.結構大きい.それでも空き領域は20GBくらいしかない.⇒完全なディスククリーンアップを実行して30GBまで増えた.ドライブのバナーも青色に変わったのでしばらくはこれで遊べる.昨日の続きに戻ろう.警告が100件くらい出ているので,ともかく,これを片付けてしまおう.

This function or variable may be unsafeがかなりの件数ある.fopen, scanf, getch, strcpy, sprintf, ctime, strcpy,.. などだ.⇒終わった.バッファサイズで生値を使っているところはリテラルに変えた.⇒いや,まだ終わっていない.デバッグモードでコンパイルして新たな警告が出てきた.⇒コンパイルエラーはすべて取れた.

一つだけビルドエラーが残っている.「warning MSB8028: 中間ディレクトリ (Debug\) に別のプロジェクト (Ariadne.vcxproj) と共有されているファイルが含まれています。これにより、クリーンしてリビルド動作が適切に行われない可能性があります。」中間フォルダを全削除してリビルドでこのエラーは消えたが,まだ2つある.一つは「warning MSB8004: Output ディレクトリの末尾がスラッシュではありません。Output ディレクトリが適切に評価されるようにするために、このビルド インスタンスによってスラッシュが追加されます。」もうひとつは,

「warning MSB3270: 構築されているプロジェクトのプロセッサ アーキテクチャ “AMD64” と、参照 “D:\アリアドネ\Debug\ElsieProject.dll” のプロセッサ アーキテクチャ “x86” の間には不一致がありました。この不一致は、ランタイム エラーを発生させる可能性があります。プロジェクトと参照の間でプロセッサ アーキテクチャが一致するように、構成マネージャーを使用してターゲットとするプロジェクトのプロセッサ アーキテクチャを変更するか、ターゲットとするプロジェクトのプロセッサ アーキテクチャに一致するプロセッサ アーキテクチャとの依存関係を参照で設定することを検討してください。」

上の警告はELSIEで出ているようだ.いや,ElsieProjectではないか?確かに\が落ちている.これでビルドも通った.しかし,起動して冒頭で例外が発生する状況は変わらない.

▲リリース版は走ったが,デバッグ版が起動時エラーになる.

Application.Run(new Form1());のところで,「ハンドルされていない例外」が起きている.詳細は以下の通り:

System.TypeInitializationException
   HResult=0x80131534
   Message=’準同型検定CS.Form1′ のタイプ初期化子が例外をスローしました。
   Source=準同型検定CS
   スタック トレース:
    at 準同型検定CS.Form1..ctor() in D:\アリアドネ\準同型検定.cs:line 129
    at 準同型検定CS.Program.Main() in D:\アリアドネ\Program.cs:line 19

内部例外 1:
BadImageFormatException: ファイルまたはアセンブリ ‘ElsieProject, Version=1.0.8684.30681, Culture=neutral, PublicKeyToken=null’、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。

デバッグビルドでは「warning MSB3270: 構築されているプロジェクトのプロセッサ アーキテクチャ “AMD64” と、参照 “D:\アリアドネ\Debug\ElsieProject.dll” のプロセッサ アーキテクチャ “x86” の間には不一致がありました。この不一致は、ランタイム エラーを発生させる可能性があります。プロジェクトと参照の間でプロセッサ アーキテクチャが一致するように、構成マネージャーを使用してターゲットとするプロジェクトのプロセッサ アーキテクチャを変更するか、ターゲットとするプロジェクトのプロセッサ アーキテクチャに一致するプロセッサ アーキテクチャとの依存関係を参照で設定することを検討してください。」がまだ出ている.

ElsieProjectからAriadne100への参照が入っていなかった.⇒このエラーは解消したが,もうひとつ出てきた.「LNK1181    入力ファイル ‘D:\アリアドネ\Debug\Ariadne100.lib’ を開けません。    ElsieProject    D:\アリアドネ\ElsieProject\LINK    1    」

ElsieComeBackはLIBを持っているのだが…Ariadne100ではどこにもLIBはない.インポートライブラリ:$(OutDir)$(TargetName).libは設定されている.すべての中間ファイルを削除してリビルドしたところ,今度はリリースモードでも同じエラーが出るようになってしまった.Ariadne100.libが存在しない.これはElsieProjectが静的リンクを要求しているということだろうか?⇒ELSIEとAriadneの出力をDLLからLIBに変えてビルドは通ったが,起動時のエラーは収まらない.Ariadne100をビルドから外してみたところ,

「ElsieComeBack.dll(NativeFunc.obj) : MSIL .netmodule または /GL を伴ってコンパイルされたモジュールが見つかりました。/LTCG を使用して再開始してください。リンカーのパフォーマンスを向上させるためには、コマンドラインに /LTCG を追加してください。」

というエラーになった.これは最適化に関係するオプションのようだ.Debugモードではまた別のエラーになった.「warning LNK4075: /EDITANDCONTINUE は /INCREMENTAL:NO の指定によって無視されます。」⇒エディットコンティニュをオフにして解消した.

Ariadne100を切り離したにも関わらず,起動時障害が発生する.準同型検定のForm1が開けないという意味だが… Form1.csを準同型検定.csにリネームしているためではないか?クラス名はForm1のまま変更されていない.いや,そもそもリリース版では走っているのだから,そういう問題ではない.やはり,ビルドオプションが関係しているのではないだろうか?どうもよく分からない.リリースモードではLIBを指定しているのにDLLが生成されている.DLLを生成するようにしてみたが,結果は同じだ.⇒アリアドネ再開発の開始点まで戻るしかないのではないか?

コメントを残す

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

CAPTCHA