2016-06-16 10 views
1

たとえば、Release、platform x64をターゲットにVisual Studio 2015でHelloWorld.exeに次のC++コードをビルドしたとします。VS 2015 C++再配布可能なDLLは1つのDLLにありませんか?

#include <iostream> 

int main() 
{ 
    std::cout << "Hello world!!" << std::endl; 
    return 0; 
} 

数年前、私は単にHellowWorld.exeと一緒に(Cまたはmsvcr###.dllmsvcp###.dllをコピーし、実行可能なプログラムを持つことができます。

私はVS2015をインストールしましたが、今はmsvcp140.dllを持ってきているようです。私のSystem32フォルダに70〜ish api-ms-win-.....dllというファイルがあるようです。

私は、再配布可能なものをインストールさせるのが最善の方針だと知っていますが、そうでない場合は実行可能な代替方法である.DLLをコピーします。それは今の場合ですか?簡単に何かが欠けていますか?

合計:msvcp140.dllをコピーして動作させることができたと思っていましたが、これは当てはまりません。私が間違っている?

注:list of things you are allowed to redistributeにはapi-ms-....dll個のファイルがありません。それとも2015年のランタイムの一部であると理解されていますか?

+3

いいえ。それはバケツのDLL、デバッグDLL、マルチスレッドDLL、およびあらゆるスマーフの種類のDLLで構成されています。また、これらのDLLSを簡単に改ざんするのを防ぎたい場合は、1つの簡単なファイル交換とPCがBorg Collectiveに歓迎されているためです。 – user4581301

+1

あなたは間違っていません。静的なビルドを行い、新しいコンピュータを入手するためにファイルサイズについて不平を言う人に伝えてください。 –

答えて

1

再配布可能ファイルのインストールを扱うのではなく、ランタイム(/ MTおよび/ MTdコンパイラオプション)を静的にリンクする傾向があります。

ファイルサイズが大きくなりますが、DLLを出荷するよりもサイズが小さくなります。

関連する問題