Windowsのアプリケーション起動時に、「サイドバイサイド構成が正しくないエラー」が出る場合の対処方法を紹介します。
Visual Studioでデバッグ方法(初心者向け基本)を動画で紹介しています。
サイドバイサイド構成が正しくないエラー
Windowsでアプリケーション実行時に以下のエラーが出て起動できない場合があります。
「このアプリケーションのサイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした。」
以下の問題の可能性が高いです。
・ファイルが壊れている
・ランタイムライブラリがPCにインストールされていない
ランタイムライブラリとは、アプリケーション(プログラム)を動作させるために必要なファイルです。
対処方法
原因は、以下の2つが考えられますので、それぞれの対処方法を説明します。
・アプリケーションが使っているファイルが破損している
・インストールしたアプリケーションが古くて、Visual C++ランタイムが古い
1.アプリケーションを再インストールする
アプリの最新版のインストーラーを入手して再インストールを試してみてください。
一旦、アンインストールして古いファイルが残っていない状態で、再インストールしたほうが確実でしょう。
2.Microsoft Visual C++ランタイムを再インストール
Microsoft Visual C++ランタイムを再インストールします。
現在、パソコンにインストールされているMicrosoft Visual C++ランタイムを再インストールすることでエラーが解決する可能性があります。
インストールされているランタイムは、「アプリと機能」画面で確認できます。
どれを入れたら分からない場合は、余分に入っていても実害はないので、足りないランタイムライブラリをインストールします。
3.システムファイルチェッカーツール(SFC)で修復
システムファイルチェッカーツール(SFC)で、壊れたシステムファイルを修復します。
Windowsのシステムファイルが破損していたり欠損していることが原因で、アプリケーション起動時にサイドバイサイド構成エラーが発生することがあります。
「コマンドプロンプト」を”管理者として実行”し、以下のコマンドを実行します。
DISM.exe /Online /Cleanup-image /Restorehealth |
4.Windows Updateを実行する
Windows Updateを実行します。
Windowsのシステムに問題があることが原因で、アプリケーションのサイドバイサイド構成エラーが発生する場合があります。
Windows Updateを実行することで問題の箇所が修復されることがあります。
そのため、利用可能なWindows Updateがあればアップデートを実行してみてください。
ランタイムライブラリについて
インストールしているランタイムの確認方法
「設定」-[アプリと機能]で 「visual」と入力します。
「Microsoft Visual C++ 20xx 」と表示されているものがランタイムライブラリです。
Visual C++ ランタイム一覧
・Visual Studio 2008 (Visual C++ 9) 未サポート
・Visual Studio 2010 (Visual C++ 10) 未サポート
・Visual Studio 2012 (Visual C++ 11)
・Visual Studio 2013 (Visual C++ 12)
・Visual Studio 2015-2022
配布はされていますが、10年以上前のランタイムは未サポートですね。
プログラム開発者向け
イベントログを見る
イベントログに情報がありますが、よくわからない情報です。
[Windowsログ] – [Application] でエラーを確認。
詳細な診断を行うには sxstrace.exe を実行してください。
VC80.DebugCRT という情報から、Visual C++ 8.0のデバッグ用ライブラリがないということ。
SxsTraceを使う
エラーメッセージに「sxstrace.exe を使用してください」と書かれているので使ってみました。
このアプリケーションのサイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした。詳細については、アプリケーションのイベント ログを参照するか、コマンド ラインツール sxstrace.exe を使用してください。
(1)管理者権限でコマンドプロンプトを起動。
(2) sxstrace を Trace オプション付きで実行。
バイナリファイルが生成される。
このファイルはテキスト形式でないので、テキストエディタでは見ることができない。
(3)アプリ実行。
問題のアプリケーションを実行するとエラーメッセージが表示され、[OK]ボタンを押して終了する。
(4)SxsTrace.exeを Parse オプション付で実行する。(実行は1行で)
変換しないとエディタで見ることができない。
(5)テキストエディタで出力ファイルを開く
SxsTraceの出力の見方
情報: 参照: Microsoft.VC80.DebugCRT,processorArchitecture=”amd64″,type=”win32″,version=”8.0.50727.762″
情報: 参照 Microsoft.VC80.DebugCRT,processorArchitecture=”amd64″,type=”win32″,version=”8.0.50727.762″ を解決。
情報: マニフェストを C:\WINDOWS\assembly\GAC_64\Microsoft.VC80.DebugCRT\8.0.50727.762__xx\Microsoft.VC80.DebugCRT.DLL で調査。
情報: マニフェストを C:\test1\x64\Debug\Microsoft.VC80.DebugCRT.DLL で調査。
情報: マニフェストを C:\test1\x64\Debug\Microsoft.VC80.DebugCRT\Microsoft.VC80.DebugCRT.DLL で調査。
エラー: 参照 Microsoft.VC80.DebugCRT,processorArchitecture=”amd64″,type=”win32″,version=”8.0.50727.762″ を解決できません。
イベント ログ、及びSxsTrace コマンドの結果より、
・VC80.DebugCRTDLLが存在していない
・DLLのプロセッサ アーキテクチャはamd64(x64)である
・DLLのバージョンは、8.0
★対処法:Visual C++ 8.0 (VS 2005) 再配布をインストールする。
ソースがあれば再コンパイルする
Visual Studioなどで開発時に稀に遭遇することがあります。
いろいろなライブラリを使っていてビルド環境が混在している場合などに発生します。
古いVisual C++(Visual Studio)でコンパイルされたスタティックライブラリをリンクすると発生します。
今回のsxstraceの結果は、このケースでした。
デバッグ版のライブラリとリンクされていたので、ソースファイルを入手してVisual Studio 2019でリビルドしました。
あとがき
Windowsは歴史が長く、プログラムの開発環境も変わってきたので、いろいろ発生しますね。
こういうのがあるから、Javaが生まれた1つの理由ですね。
「一度書いたコードはJVMを通してどんなコンピュータでも使えるため、プラットフォームを問わず実行可能」
最後に(Windows VPSを紹介)
最後にWindowsアプリの開発者や利用者に便利なサービスを紹介します。
クラウド上のWindows Serverがリーズナブルな価格で即日利用可能なVPSサービスが存在します。動作検証などで1ヶ月だけの利用などの用途にも使えます。
物理サーバマシンを手配したことがある方は経験があると思いますが、
物理サーバを用意する場合は、メーカーにサーバマシンの見積りを取って、手配をして搬入して設置し、Windowsをインストールしてネットワークなどを設定してやっと使えるようになります。(どんなに早くても週単位で時間がかかります)
「ConoHa」と「さくらVPS」では、契約アカウントの作成からWindows Serverが使えるまで、30分かかりません。
(他の会社のVPSは、次の営業日だったりと開始まで時間がかかります。)
ConoHa の VPSは時間課金をサポートしているので、2、3日だけ使うという用途でも利用可能です。(4時間だけという使い方もできます)
私は記事を書くための調査や動作確認にConoHaのVPSを使っています。ローカルのPCにいろいろソフトをインストールするとWindowsが不調になるので。
Kindle出版しました
Visual Studio デバッグ関連のブログ記事を再編集してアマゾンのKindle本で提供しています。
Kindle Unlimited会員は無料(0円)で読むことができます。
Visual Studioの役に立つ情報も追加しているので、気になる方は以下の記事もご覧ください。
Kindle出版で技術本を出版するノウハウも記載しています。