※ ChatGPTを利用し、要約された質問です(原文:VS2005 リリースビルドしたEXEが他のPCで開けない)
VS2005リリースビルドしたEXEが他のPCで開けない
このQ&Aのポイント
VS2005 C++ ExpressでWindowsフォームアプリケーションをC++/CLIで作成し、リリースビルドしたexeファイルを他のPCで開くとエラーが発生します。
いくつかの対処法を試しましたが、問題は解決しませんでした。
問題の原因はライブラリやランタイムに関連している可能性がありますが、具体的な解決策はわかりません。
VS2005 リリースビルドしたEXEが他のPCで開けない
VS2005 C++ ExpressでWindowsフォームアプリケーションをC++/CLIで作成しています。
(Standardを買う予定なのですが、まだ買いにいけていないのでExpressのままです)
OSはWinXP Pro-SP2です。
リリースビルドしたexeファイルを、当該PCでは実行可能なのですが、
exeを他のPCにコピーして実行すると、
「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります」
というダイアログが表示され、終了してしまいます。
検索してみたところ、いくつか対処法があったのですが、試した中では解決できませんでした。
◎ソリューションのプロパで、[構成プロパティ]-[C/C++]-[コード生成]で、ランタイムライブラリを「マルチスレッドDLL/MD」を「マルチスレッド/MT」に変更
→ビルド時に「/MTと/clr:pureは同時に使用できません」エラー
→/clr:pureを/clrのみにしても同じ。
→「共通言語ランタイムサポートを使用しない」にすると、
「マネージターゲットコードには/clrが必要」でビルドエラー
→→→/MD /clr:pureに戻しました
◎exeと同じディレクトリにmanifestを作成
▽ファイル名はMicrosoft.VC80.CRT.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Microsoft.VC80.CRT"
version="8.0.50727.762"
processorArchitecture="x86" >
</assemblyIdentity>
<file name="msvcr80.dll"/>
</assembly>
versionについては、VC++Expのバージョン情報で表示されるものに変更。
→同じように、exe実行時にエラー発生、同じダイアログ
→msvcr80.dllを同じディレクトリに置いても同じ
◎Platform SDKのDependency Walkerでexeをチェック
→MSJAVA.DLLが見つからないという赤いメッセージが出る。
→ファイル名をPC内で検索したが、見つからず。
(VS2005ExpがインストールされたPCも、別のXPが入ったPCも)
→試しに、vectorで拾った実行OKなDLL不要exeアプリをD-Walkerに
かけてみたら、同じようにMSJAVA.DLLが見つからないという
メッセージが表示された。 でも当然このexeはどのPCでも実行OK。
◎新しくプロジェクトを作成。 ボタンをひとつ配置し、
イベント発生の関数のみ作成。 ただし中身はカラ。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { }
→デバッグビルドもリリースビルドも問題なし。 でもexeを
別のPCにコピーすると同じダイアログが出てエラー終了
◎http://support.microsoft.com/kb/814496/jaに載っている方法:
Visual Studio .NET プロジェクトで app.config ファイルの <xml> を
UTF-8 に変更し、UTF-8 エンコードで app.config ファイルを保存します。
→app.configファイルが検索しても見つからず
これは何が悪いのでしょうか?
ライブラリ・ランタイム関連であろうということはわかるのですが、
解決方法がわかりません。
よろしくお願いします。
補足
ご回答ありがとうございます。 「Microsoft .NET Framework Version 2.0 再頒布可能パッケージ (x86)」 「Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)」 この二つはすでにインストールしてありましたが、ダメでした。 念のために.NET Framework を修復インストールもしてみましたが同じでした。