• ベストアンサー

VC++で作成アプリをWinPEで動かしたい

Microsoft Visual Studio 2012 を使っています。VC++ で作成したアプリケーションをVisual Studio のインストールされていないPC(例えばMacPC)で動かすために、Windows PE 3.1 を起動し、このOS上で VC++ で開発したアプリケーションを動かしたいのです。この場合、どうすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> (例えばMacPC)で動かすために、Windows PE 3.1 を起動し、 ちょっとこちらは使った事ないですが、一般的にVC++やVSで開発したプログラムを別の環境で動作させる方法としては、 1) 対象の環境にランタイムパッケージをインストールする。 公式のダウンロード センターから Visual Studio 2012 更新プログラム 1 の Visual C++ 再頒布可能パッケージ をダウンロード http://www.microsoft.com/ja-jp/download/details.aspx?id=30679 2) 取りあえず作成した.exeを放り込んで実行し、dllが必要な旨のエラーが出るなら.exeと同じ場所に実行可能な環境のWindowsフォルダなどからコピー。 ゲンミツにはライセンス的に問題あるかも? 3) ライブラリをスタティックリンクしてdll不要な.exeを作成。 別の問題が起きる事もあるとか。 こちらのような記事が参考になるかも。 MFC編 - MFCをスタティックリンクしたときに出るエラー http://www.g-ishihara.com/mfc_ge_01.htm VC++2010Expressで静的リンク http://social.msdn.microsoft.com/Forums/ja-JP/vcexpressja/thread/18021085-c534-4ddc-b2fc-9124c61ab153/

Agusuke
質問者

お礼

「neKo_deuxさん」、「matyu1003さん」のお二人は、ノロマな私に愛想をつかされたようで、私の弁解に目や耳を貸していただけないようです。質問投稿から2週間が過ぎ、事務局から閉鎖を勧告され、この質問を一旦閉鎖せざるを得なくなりました。 5月8日付けの私の補足に追加の補足を加え、この質問をクローズさせていただきます。 当然のことですが、VC++アプリケーションには、x86とx64の2種類あります(Itanium は無視します)。コピーする DLL ファイルもx86とx64で使い分ける必要があります。投稿した補足説明に記載したコピー元はx86だけなので、x64アプリ用のコピー元を次に記載して置きます。 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\x64\Microsoft.VC110.CRT\ また、Mac PC でWindows PE を起動できるのは、Core i5 と Core i7 を搭載した iMac に限られます。matyu1003さんは、「IntelMac」の言葉を使い、細やかな配慮をされています。 iMac でWindows PE が起動したとしても、キーボード、マウス、NICなどのデバイス ドライバーがWindows PE 3(Windows 7)にない場合は、Windows PE 作成時に必要なデバイス ドライバーを組み込む必要があります。 「neKo_deuxさん」、「matyu1003さん」のお二人に改めて感謝の言葉を贈らせていただきます。本当にありがとうございました。 thunder-bird さん、今回の試行ではMac OS を全く使いません(HDも使いません)。MacPC は、単なる鉄の箱としての利用です。使うのは、CPU、主メモリー、キーボード、マウス、ディスプレイだけですが場合によってはNIC、共有ディスクなども使います。 以上で私の質問をクローズしますが、静的リンクは未解決なので、新しい別の質問を投稿させていただきますので、ご教示いただければ幸いです。 本当にありがとうございました。

Agusuke
質問者

補足

neKo_deuxさん、回答ありがとうございます。お礼が大幅に遅れたことを深く、お詫びします。 私の質問に関連して、Microsoft と4月22日から協議しておりました。少し長くなりますが、協議の内容を一読いただければ幸いです。 協議の前提は、次のMSDNの技術資料「Deployment in Visual C++」です。 http://msdn.microsoft.com/ja-jp/library/dd293574.aspx この資料を私流に要約すると次の3種類の解決方法が示されています。(内容は、neKo_deuxさんの回答の通りです。記載順に番号を付けました。) (1) Central Deployment(集中配置) 次のVisual C++ 再頒布可能パッケージを使うのが一般的 VCRedist_x86.exe(約4.8MB)、VCRedist_x64.exe(約7MB) Windows Update で自動更新される。 (2) Local Deployment(ローカル配置) 必要なDLL モジュールをコピーして使う。 Windows Update による自動更新はない。 (3) Statically Link(静的リンク) Windows Update による自動更新はない。 私の目的は、Visual Studio のインストールされていないPCでVC++ で開発したアプリケーションを動かすことです。説明不足でしたが、ターゲットPCに.NetFrameWork を追加することなく、言い換えるとターゲットPCへの変更を極力ゼロにしてVC++アプリケーションを動かすことを目的としています。Windows PE 4 ではなくWindows PE 3(質問には3.1 と書きました)と限定したのは、.NetFrameWork やPowerShell 環境を排除するためです。Windows PE 3 をコールド ブートすればターゲットPCへの変更は完全ゼロでVC++アプリケーションを起動できます。この目的が達成できれば、iMac を含め世の中に存在する殆どのPCに応用可能です。 Mac PC については、thunder-bird さんから厳しいご批判を戴きましたが、私の説明不足が原因で誤解を招いたようです。結論として「(1) 再頒布可能パッケージ」は選択肢から外れます。また、当然のことですが、bootcamp を利用してWindows OS をMac PC にインストールする選択肢も除外されます。 残りの(2)と(3)の内、静的リンクは私に知識がなく、当面採用不可能で、残ったのは(2)のローカル配置です。 neKo_deuxさんご指摘の通り、C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\ フォルダーから msvcp110.dll と msvcr110.dll をVC++アプリケーションを運搬する USB メモリーなどにコピーするだけで、解決します。しかも、この DLL ファイルは、ターゲットPCにインストール不要でVC++アプリケーションと同じ場所にあれば事足ります。 以上を踏まえ、Microsoft(日本では、IT化支援センター) に(2)の使用許可を求めたところ以下の回答を得ました。 『(2)の手法は、ユーザーが開発目的で使用することを認めたもの。開発が終わったら、使用は認めないのでDLLの利用は、(1) の再頒布可能パッケージ経由で使用して欲しい。これ以上の説明はIT化支援センターではできない、後は有償の技術サポートを利用してほしい。』でneKo_deuxさんが想像された通りです。Microsoft とは、数日間協議をしましたが結局物別れです。また再頒布可能パッケージは、Windows PE 3 にはインストールできず、ライセンスに違反しない利用方法は(3) の静的リンクに限定されます。 以上の説明で私の失礼をお許しいただきますよう、お願い申し上げます。最後にお願いです。『静的リンク』の設定方法をご教授戴けませんでしょうか?neKo_deuxさんの回答にあったURLを覗きましたが、Visual Studio 2012 で同じ「全般」タグが見つかりませんでした。

その他の回答 (2)

回答No.3

Macの環境について分かっていないので止めておいた方がいいです。 OS、ソフトウェアに対する理解が浅すぎます。

Agusuke
質問者

補足

thunder-birdさん、回答ありがとうございます。neKo_deuxさんへの補足説明をご一読ください。Mac OS で動かすことは考えておりません。私の説明が不十分なため、誤解を与えてしまったことをお詫びします。

  • matyu1003
  • ベストアンサー率42% (257/598)
回答No.1

Visual StudioでMFCをスタティックライブラリとして実行ファイルに組み込めばランタイムなしで動く実行ファイルができます。Visual Studioや再頒布パッケージ等は不要になるので、これならWindows PEで動くと思います。USBブートのWinPEにすれば、USBメモリに実行ファイルを入れておいてやればいいでしょう。 ただ、IntelMacでWindows PEを起動したとして、HDDにのMacOS領域にはアクセス出来ませんよ?

Agusuke
質問者

お礼

matyu1003さん、回答ありがとうございます。お礼が大変、大変遅れましたことお詫びします。 neKo_deuxさんへの補足説明に私の事情を記しましたので、是非ご一読ください。 また、ご指摘の通り iMac は、Windows とFormat 形式が違うので、Mac の OS 領域は見れませんね。neKo_deuxさんへの補足説明に記載しました通り、MacPCでVC++のアプリケーションを動かすことが目的です。 ご親切に感謝します。

関連するQ&A

専門家に質問してみよう