2

提供されているAPIを使用して一部のハードウェアをテストするC++(Visual Studio 2005で構築)で記述された単純な.exeがあります。構築したWindows7マシンでは正常に動作しますが、別の(Windows 7)マシンにコピーして(コマンドラインから)実行すると、次のようになります。

サイドバイサイド構成が正しくないため、アプリケーションを起動できませんでした。詳細については、アプリケーションイベントログを参照するか、コマンドラインのsxstrace.exeツールを使用してください。

「サイドバイサイド構成」とは何ですか?

sxstrace.exeを実行し、使用法情報を読みました。sxstrace.exeのログファイルを生成するには、exeをインストルメント化する必要があるようです。

問題は、私のexeが他のマシンに存在しないか、バージョンが間違っているDLLを必要としていることだと思います。exeが使用しているDLLと、マシン上でリンクしているバージョン(動作している場所)を確認するにはどうすればよいですか?別のマシンにコピーして実行するためのその他のアドバイスはありますか?より多くの情報が役立ちますか?

4

4 に答える 4

3

mfawzymkhの「並列構成が正しくないため、アプリケーションを開始できませんでした」という質問(この質問への回答でリンクされている質問のspirulenceリンクされている)は、この質問にも当てはまるようです。mfawzymkhは次のように書いています。

この問題は、次のいずれかによって解決できます。1-VC8DebugCRTをインストールします。2-静的にリンクされたアプリをビルドします。

そして、同じ答えに対するmfawzymkhのコメントは、静的にリンクされたものとして構築する方法を説明しています。

VSでビルドする場合は、[プロジェクト]->[設定]->[C / C ++]-> [コード生成]に移動し、ランタイムライブラリオプションを/MDdではなく/MTdに選択します。

私はそれを行い、サイドバイサイド構成メッセージは消えました。(そして、私が使用していたDLLに何か他のものをインストールした後、私のEXEは動作します。)

于 2010-08-31T19:54:43.917 に答える
3

その価値について、私は同じ問題に遭遇しました。イベントビューアに、次のようなエラーメッセージが表示されました。

「C:\\ MyExe.exe」のアクティベーションコンテキストの生成に失敗しました。12行目のマニフェストまたはポリシーファイル「C:\\MyExe.exe.Config」でエラーが発生しました。Xml構文が無効です。

案の定、接続文字列を変更し、終了引用符を省略しました。それを追加し直して、問題を解決しました。

于 2011-12-29T19:12:44.170 に答える
2

「VSでビルドするときは、プロジェクト->設定-> C / C ++->コード生成に移動し、ランタイムライブラリオプションを/MDdではなく/MTdに選択してください」が機能しましたが、代わりにリリースバージョンに興味がありましたデバッグバージョンの。

Microsoftoによると:/ MTアプリケーションで、ランタイムライブラリのマルチスレッド静的バージョンを使用します。_MTを定義し、コンパイラーにライブラリー名LIBCMT.libを.objファイルに配置させて、リンカーがLIBCMT.libを使用して外部シンボルを解決できるようにします。

/ MDアプリケーションで、ランタイムライブラリのマルチスレッドおよびDLL固有のバージョンを使用します。_MTと_DLLを定義し、コンパイラにライブラリ名MSVCRT.libを.objファイルに配置させます。このオプションでコンパイルされたアプリケーションは、MSVCRT.libに静的にリンクされます。このライブラリは、リンカが外部参照を解決できるようにするコードのレイヤーを提供します。実際に機能するコードはMSVCR100.DLLに含まれており、実行時にMSVCRT.libにリンクされたアプリケーションで使用できる必要があります。

于 2013-09-30T16:41:31.570 に答える
1

あなたはこの男と同じ問題に苦しんでいますか?サイドバイサイドアセンブリ、Windows 7、およびVisual Studio 2005

于 2010-08-31T18:27:28.743 に答える