Windows

「サイドバイサイド構成が正しくない」エラーでアプリが起動できない対処方法

Windowsのアプリケーション起動時に、「サイドバイサイド構成が正しくないエラー」が出る場合の対処方法を紹介します。

サイドバイサイド構成が正しくないエラー

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 C++ ランタイム一覧 公式サイト

・Visual Studio 2005 (Visual C++ 8)  未サポート
・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] でエラーを確認。

“C:\src\test1\bin\x64\Debug\test1.exe” のアクティブ化コンテキストの生成に失敗しました。 従属アセンブリ Microsoft.VC80.DebugCRT,processorArchitecture=”amd64″,publicKeyToken=”1fc8b3b9a1e18e3b”,type=”win32″,version=”8.0.50727.762″ が見つかりませんでした。
詳細な診断を行うには sxstrace.exe を実行してください。

VC80.DebugCRT という情報から、Visual C++ 8.0のデバッグ用ライブラリがないということ。

SxsTraceを使う

エラーメッセージに「sxstrace.exe を使用してください」と書かれているので使ってみました。

C:\src\test1\bin\x64\Debug\test1.exe
このアプリケーションのサイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした。

詳細については、アプリケーションのイベント ログを参照するか、コマンド ラインツール sxstrace.exe を使用してください。

(1)管理者権限でコマンドプロンプトを起動。

(2) sxstrace を Trace オプション付きで実行。

sxstrace Trace -logfile:C:\temp\trace\trace.log

バイナリファイルが生成される。
このファイルはテキスト形式でないので、テキストエディタでは見れない。

(3)アプリ実行。
問題のアプリケーションを実行し、エラーメッセージを表示され、[OK]ボタンを押して終了する。

(4)SxsTrace.exeを Parse オプション付で実行する。(実行は1行で)
変換しないとエディタで見れない。

sxsTrace Parse -logfile:C:\temp\trace\trace.log -outfile:C:\temp\trace\trace.txt

(5)テキストエディタで出力ファイルを開く

SxsTraceの出力の見方

情報: マニフェスト ファイル C:\test1\x64\Debug\test1.exe を解析。
情報: 参照: 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を通してどんなコンピュータでも使えるため、プラットフォームを問わず実行可能」

初心者向け Visual Studio 2022 インストール/ビルド/実行方法Windowsのプログラミングで必要な『Visual Studio 2022』の紹介です。 Visual Studio は、Win...