ビジュアルC++コンパイラでコンパイルされたコードがストレートC++の場合、なぜ再配布可能なパッケージが必要ですか?これはあなたのコードプラットフォームに依存しますか?ビジュアルC++コンパイラを再配布可能なパッケージで使用すると、g ++と一緒に別のIDEを使用するよりも利点がありますか?Visual C++再頒布可能パッケージが必要な理由
答えて
コードはプラットフォームに依存しません。実行可能ファイルです。これは、DLLのような再配布可能ファイルに含まれている標準ライブラリの実装でMSライブラリとリンクされています。
IIRCすべての静的リンクオプションが必要です。追加の再配布可能ファイルは必要ありませんが、結果として生じるバイナリはプラットフォームに依存します。たとえば、UNIXでWindowsバイナリを実行することはできませんシステム(少なくともワインなし)。
メモリマネージャ、標準I/Oライブラリ、および個別のアプリケーションのような個別のコピーを、1つのアプリケーションに含めて、管理したり膨大な量の膨大な量をアップグレードしたりすることはできません。それを必要とする可能性のあるアプリケーションごとにすべてのコードを1回だけ含んでいます。 –
@DavidSchwartzええと...とにかく、Windowsのすべてのインストールでデフォルトで含まれていると思いますが、それは正しいのでしょうか? – littleadv
これは、Windowsのインストールと実行時間によって異なります。たとえば、Windows Vista SP1の新規インストール(誰かがそれをまだインストールしている場合)には、VS2010ランタイムはありません。 –
"ストレートC++"のようなものはありません。あなたはあなたのコード内でここで呼び出されるいくつかのライブラリ関数が常に存在するでしょう。そして、あなたが非常に注意していても、コンパイラによって生成されたコードによって単に呼び出される必要があるいくつかの関数があります。コンパイラはコードに置き換えます
for(int i = 0; i < count; i++)
array1[i] = array2[i];
いる単にコピーするメモリオーバー:たとえば次のようなループを持っている場合。そして速度の代わりに小さなサイズのためにコンパイルしている場合、これはmemmove()と非常によく似た関数への呼び出しになります。
また、直接のx86対応の命令が存在しない浮動小数点演算もあります。これらは関数呼び出しでも実装されます。そして、そのリストは続く。
異なるプラットフォームでは、そのプラットフォームのコンパイラが、同じプラットフォームのC++ランタイムと同じコードをコンパイルするため、コードプラットフォームは依存しません。
幸いにも、C++ランタイムはアプリケーションとは別のエンティティである必要はありません。コンパイラとリンカのオプションを確認してください。両方を含む単一の実行可能ファイルを生成できるはずです。 g ++が別のランタイムを必要としていないことがわかった場合、これはデフォルトで正確に実行されるためです。
C++再配布は、使用しているIDEに固有のものです(「IDE」は、私が言うが、それは、コンパイラには本当に特定のですが、まだ物事が一緒に移動するようIDE &コンパイラは、両方の新しいバージョンを割り当てられている。)
これはそのIDE固有のものですが、Win OSのものではありません。したがって、それは下位互換性があるはずです(あなたが新しいAPIを使用していないと仮定すれば、明らかに)。最高のIDEバージョン(10,11,12 ...)で、Win2kでコードを実行してください!
もちろん、Linuxとは違い、各メインバージョンで再コンパイルすると予想されます。ほとんどのUnixシステムはそのように動作します。
これらの再配布可能ファイルを避けるために、C++を静的にコンパイルする方法はわかりません。可能であれば、あなたの.exeを非常に大きくするでしょうが。
私は常にVisual C++ 6のコピーをXP仮想マシンにインストールしています(Win 6/7/8では正しく動作しません)。時には私は、何かを高速で実行するためのユーティリティー・アプリケーションを書くことを頼まれているか、または一度オフにして、私が単一のexeとしてコンパイルすることを頼まれています。私はいくつかの不足しているdllまたは再配布可能なパックのために動作しないことを彼らに伝えるためにのみ、他の人に標準ライブラリのみを使って書かれた簡単なプログラムを送信するのが気にしない。
プロジェクトのプロパティで、C/C++、コード生成でリリースビルドの/ MTにランタイムライブラリを設定します。
(social.msdnにこの質問に答えマイク・デインズにクレジット:https://social.msdn.microsoft.com/Forums/vstudio/en-US/09afd4be-7a15-4772-98c1-a0464a96cd7f/how-to-static-linkage-in-visual-c-express-edition-2010?forum=vcgeneral&prof=required)
- 1. Visual C++再頒布可能パッケージは必要なライブラリをインストールしません
- 2. Visual C++の再頒布可能な再配布
- 3. Visual Studio 2008 SP1再頒布可能
- 4. レポートビューア14.0再頒布可能
- 5. JRE再頒布可能ライセンス
- 6. Visual Studio 64ビットアプリケーションを実行するには、再頒布可能パッケージx64が必要ですか?
- 7. VC++ 2012 Update 5再頒布可能
- 8. 再頒布可能.NET Frameworkのインストーラ
- 9. ODP.NETは再頒布可能ですか?
- 10. Vulkan SDK再頒布可能物
- 11. Visual C++ 2015再頒布可能パッケージ後のWindows 10でのapi-ms-win-crt-runtime-l1-1-0.dllなし
- 12. Visual C++ 2008 SP1再頒布可能パッケージがインストールされているかどうかを確認しますか?
- 13. パッケージVisual C++再配布可能2013年バイナリ(アプリ付き)
- 14. インストール:Microsoft Visual C++再配布可能ファイルが「処理中:Windows7_MSU_X64」
- 15. Visual Studio 2008 SP1の再頒布可能パッケージは、Windowsのアップデート/サービスパックで利用できますか?
- 16. VS2015 C++再頒布可能パッケージがインストールされているかどうかを確認するWIXチェック
- 17. .NET 3.5 Client Frameworkは再頒布可能ですか?
- 18. VC++再頒布可能な2012年または2013年または2015年?
- 19. ランタイム再配布可能なC++バイナリを再配布可能(Server2k3、XPSP3)
- 20. いつMSVCRTの再配布可能ファイルが必要ですか?
- 21. Microsoft Visual C再配布可能パッケージとランタイムパッケージの違いは何ですか?
- 22. Visual C++再配布可能なダウンロード固有のバージョン
- 23. のVisual C++ 14再頒布可能パッケージの前提条件 - 私はVC++ 14のRedistパッケージを必要とx64のプログラムをインストールするVisual Studioのセットアッププロジェクトを持っているVisual Studioのセットアップがproj
- 24. エラー:「MSVCP90.dll:そのようなファイルやディレクトリはありません」のMicrosoft Visual C++ 2008再頒布可能パッケージは、
- 25. Visual C++再配布可能パッケージをインストールせずにVisual Studio 2015 C++実行ファイルを実行する
- 26. アンマネージドコードで再配布可能なパッケージが必要なのはなぜですか? (msvcp100.dll)
- 27. このアプリケーションを実行するには、いくつのVisual C++再配布可能ファイルが必要ですか?
- 28. Microsoft Visual C++ 2003再配布可能ファイルをダウンロードする場所
- 29. C++ 2008再配布可能パッケージの再配布は禁じられていますか?
- 30. Pythonパッケージ(eggなど)が必要な理由
コンパイルされたコードは、*必ず*プラットフォームに依存しています。コンパイルされたプラットフォーム上でのみ動作します。 –
必須ではありません。代わりにセットアッププロジェクトを作成する必要があります。または、/ MDではなく/ MTでコンパイルして、まったく必要ないようにします。ただし、DLLを使用すると危険です。 –