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ファイルが検索しても見つからず
これは何が悪いのでしょうか?
ライブラリ・ランタイム関連であろうということはわかるのですが、
解決方法がわかりません。
よろしくお願いします。