ページ 11

「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 10:01
by SCO(すこ)
私は、VC++2008を使ってとあるプログラムを作りました。
開発環境はwindos7 32bitです。開発環境では、そのプログラムは正しく実行できました。
しかし、動作確認のためそのプログラムを他のPC(windows7 64bit)で実行しようとした所、以下のエラーメッセージが出てきたため、実行出来ませんでした。

「このアプリケーションのサイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした。」

このエラーメッセージに対し、私はまず、原因と対策を調べました。調べた結果、「VisulC++のランタイムを入れると治る」と出たので、早速そのランタイム(Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)とMicrosoft Visual C++ 2008 SP1 再頒布可能パッケージ (x64))をインストールしてみました。しかし、ランタイムをインストールしても、エラーが消えることはありませんでした。

おそらく大抵の場合、ランタイムをインストールすれば解決する問題なのでしょう。しかし、私の場合、ただランタイムをインストールするだけでは解決出来ませんでした。どこが間違っているのか皆目見当がつかないので、状況をうまく説明出来なくて申し訳ないですが、何か知っている方がいればご教授願います。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 10:20
by usao
>サイドバイサイド
私もこれ体験しては絶望感を感じています.
(1)エラーメッセージが何いってるかわからない
(2)調べても煙に巻くような説明しかでてこない
(3)(2)の過程で何かしら中途半端に原因が分かった?ような気がしても,「で,どうすれば?」の部分が不明
という3重苦.

経験的には
・とりあえず再配布パッケージは必須っぽい.
・別のPCに単純にexeファイルを持っていくのはまずダメ(ちゃんとセットアッププロジェクトを作り,インストールする)
・それでもダメなときが多い→使っているライブラリを可能な限りスタティックリンクする方向にして,後は祈る

私もこの機会に まっとうな情報 を知りたいです.

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 11:13
by softya(ソフト屋)
色々と面倒ですが、こちらが参考になりませんか?
「「サイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした。」 - プログラミングメモ」
http://d.hatena.ne.jp/teematsu/20091015/1255618138

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 12:45
by SCO(すこ)
すみません。自己解決しました。根本的な解決方法ではありませんが、手元にあったDXライブラリのサンプルプロジェクトに、自作のプログラムのソースをコピペするという、かなり強引な手段をとってみました。その結果、私の自作プログラムは他のPCでも正常に起動しました。
なぜDXライブラリのサンプルプロジェクトなのかというと、「DXライブラリのサンプルプログラムはちゃんと動いたのに」と思ったからというただそれだけの理由です。
私は問題が解決すればいいと思っているのでこれでよいのですが、結局私のやり方は根本的な解決方法とはいえないでしょう。
なにせ、原因究明もなにもかもをすっ飛ばした方法ですので・・・。
なので、usao様のためにも、何かまともな情報があればよろしくお願いします。

それから、情報を提供してくださったusao様、softya様。本当にありがとうございました。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 12:47
by softya(ソフト屋)
その場合はDXライブラリのバージョンに依存すると言うことでしょうか? それだと今後すごく困ると思います。
あと、Debugビルド/Releaseビルドの問題ではないですよね?

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 12:55
by SCO(すこ)
いえ、私の自作プログラムには、DXライブラリは使っていません。
なので、DXライブラリのヴァージョンは関係ないです。
サンプルソースからDXライブラリを使うような記述を削除した上で試したことなのでその辺には問題ありません。

おそらく、私のプロジェクト(DXにライブラリのサンプルプロジェクトではない)の新規作成の仕方になにか問題があったのだと思います。
たしか、私のプロジェクト空のプロジェクトで立ち上げたので設定し損ねている事があったのかもしれません。
見当違いの事言っていたらすみません。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 13:03
by softya(ソフト屋)
サイドバイサイドはランタイムDLLの問題なので、/MDから/MTとかビルドのオプションを変更すれば出なくなる可能性はあります。
出なくはなりますが隠れているだけで問題が解決しているわけではありません。
/MTしてしまうとDLLが使われずにスタティックリンクされるのでWindowsUpdateでのセキュリティ更新が反映されない事になります。
なので基本的には避けて欲しいです。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 13:41
by SCO(すこ)
ビルドオプションについて調べてみました。
DXライブラリのサンプルプログラムでのビルドオプションは/MTdでした。
一方、私の自作プログラムのビルドオプションは/MDdでした。

自作プログラムの方のビルドオプションを/MTに変えてみた結果。ほかのPCでもエラーメッセージ無く起動するプログラムができました。
ですが、忠告にあった通り、ビルドオプションを/MTに変える方法はなるべく避けるようにします。

私はビルドオプション、ランタイムライブラリの知識が無いのでまだまだわからない事が多いですが、その知識については
自分で色々調べて身につけていきたいと思います。
ありがとうございます。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 17:20
by ISLe
softyaさんの回答にあるリンク先の記事に書いてあることですが…

要求される再頒布可能パッケージのバージョンはイベントビューアのログを調べると分かります。
リソースエディタでexeを開いて埋め込みマニフェストを確認しても良いです。

合致するバージョンの再頒布可能パッケージをインストールする必要があります。
最新であれば良いというわけではありません。
ダウンロードセンターからダウンロードしたインストールパッケージのプロパティを見ると正確なバージョンが分かります。

セキュリティ上の問題などで古いバージョンの再頒布可能パッケージは公開が停止されているものがあります。
開発環境も最新を保つように心がけましょう。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 17:28
by ISLe
SCO(すこ) さんが書きました:ビルドオプションについて調べてみました。
DXライブラリのサンプルプログラムでのビルドオプションは/MTdでした。
一方、私の自作プログラムのビルドオプションは/MDdでした。
デバッグビルド(Debug構成でビルド)したものを使ったということですか?

これも既にsoftyaさんの指摘にありますが、デバッグバージョンのランタイムはライセンス上再配布が禁止されています。
とうぜん再頒布可能パッケージにも含まれていません。
他の(一般の)PCで動かす際にはリリースビルド(Release構成でビルド)した実行ファイルを使う必要があります。
そのPCも開発機で同バージョンのVisual C++がインストールされているなら動くでしょうが、ライセンス的にはデバッグビルドした実行ファイルだけをコピーするのは許可されない行為かと思われます。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 17:45
by SCO(すこ)
よく分からないので申し訳ないです。
私がしたのは、visualstudio2008のメニューバーの「プロジェクト」から「プロパティ」と選択し、
「構成プロパティ」→「コード生成」からランタイムライブラリの項目を確認、変更しました。
本当にそれだけです。他PCに写したのは自作のexeファイルとFreeImage.dll(GNU GPL or FIPL)だけです。
これでも、デバッグバージョンのランタイムを配布したことになるのでしょうか。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 17:50
by softya(ソフト屋)
他の人にReleaseビルドしていないexeを配布した場合は、ライセンス違反になりますね。
コード生成の設定が/MDdとか/MTdとか関係ないです。
それとは別にデバッグバージョンのランタイムの配布は別のライセンス違反です。
つまり、2つの話を混同されているのでは?

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 17:59
by SCO(すこ)
今確認してみた結果、ソースコードを編集する画面に「debug」「release」を選択するボックスが有りました(visualstudio2008C++です)
このボックスで「Release」を選択してビルドすればリリースビルドしたことになるのですか。
しかし、デバッグビルドがライセンス違反なのは初めて知りました。
現在、デバッグビルドとリリースビルドの違いを調べているところです。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:02
by ISLe
プロジェクトを開いたとき、メニュー下のツールバーに『Debug』と書かれたプルダウンメニューがありませんか?
プロジェクトのプロパティを開いたときに、ダイアログの左上に『構成』という見出しで『Debug』と書かれたプルダウンメニューがありませんか?

Debug構成というのは、デバッグしやすいようにシンボルを生成して実行ファイルに埋め込んだり最適化を抑制する設定になります。
Release構成というのは、無駄な情報を排し実際の使用において最適なパフォーマンスを発揮する設定になります。

他の一般のPCで動かすための設定をDebug構成で行うとデバッグ作業に不都合が出る可能性があります。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:04
by softya(ソフト屋)
デバックビルドのexeは、
1.デバックのためのコードを内包しています。
2.最適化されていないので遅くて、メモリサイズも大きいです。
3.最適化されると出るバグが実はあって、それが表面化していない可能性があります。
4.関数名など内部を知る手がかり情報満載です。
といったものです。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:04
by ISLe
SCO(すこ) さんが書きました:しかし、デバッグビルドがライセンス違反なのは初めて知りました。
現在、デバッグビルドとリリースビルドの違いを調べているところです。
デバッグビルドがライセンス違反なのではありません。

デバッグビルドした生成物を配布することがライセンス違反なのです。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:11
by SCO(すこ)
softya様、ISLe様

なるほど、そういった違いがあったのですか。特に「4.関数名など内部を知る手がかり情報満載です。」の部分は重要ですね。
デバッグビルドされた物を配布することが不味い理由が分かりました。
確かに、プルダウンメニューで「debug」「release」を選択する項目が有りました。ここで「release」を選択し、ビルドしたものであれば、
配布するにも問題ないという認識で問題ありませんか?

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:16
by softya(ソフト屋)
SCO(すこ) さんが書きました:softya様、ISLe様

なるほど、そういった違いがあったのですか。特に「4.関数名など内部を知る手がかり情報満載です。」の部分は重要ですね。
デバッグビルドされた物を配布することが不味い理由が分かりました。
確かに、プルダウンメニューで「debug」「release」を選択する項目が有りました。ここで「release」を選択し、ビルドしたものであれば、
配布するにも問題ないという認識で問題ありませんか?
マイクロソフトのライセンス的には、1と4がマズイはずです。他にも有るのかもしれませんが。
配布する個人としては、2と4がマズイです。まぁ、1も無駄ですが。

>配布するにも問題ないという認識で問題ありませんか?
それで配布条件はクリアされるはずです。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:18
by SCO(すこ)
softyaさん
助言いただき、ありがとうございます。
これからは、デバッグビルド、リリースビルドにも十分に気をつけ用と思います。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:19
by ISLe
SCO(すこ) さんが書きました:ここで「release」を選択し、ビルドしたものであれば、
配布するにも問題ないという認識で問題ありませんか?
デフォルトのまま使う前提であればその認識でかまわないです。

デフォルト構成はテンプレートであって、実際にはプロジェクト設定内容に依るので、Release構成のプロパティを変更すれば問題になる場合もあり得ます。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:20
by softya(ソフト屋)
ただし、Release構成でもサイドバイサイド問題は残ってますので、ご確認を。

Re: 「サイドバイサイド構成が正しくない」とでるエラーについて

Posted: 2013年6月05日(水) 18:27
by SCO(すこ)
了解しました