2016-07-26 12 views
1

C++ 11の機能とwinsocketを利用するアプリケーションを構築しました。 私はWindows 10とVisual C++ 2015コンパイラを使ってアプリケーションを構築しました。 Win10マシン上で正常に動作します。 Win7マシンでは、ファイルucrtbase.dllが見つからないことを示すポップアップが表示されます。Visual Studio 2015でWindows 7とWindows 10の両方のアプリケーションを構築する

私はウェブを少し研究して、マイクロソフトがCRTにかなり大きな変更を加え、いくつかのdllの名前を変更したことを知りました。これらのdllはWin7では利用できません。

このライブラリから独立したアプリケーションをビルドする方法はありますか?私はWin7とWin10の両方のユーザーにアプリケーションを出荷したいと思います。あなたの質問にコメントが、あなたは静的にプロジェクトのConfiguration Properties -> C/C++ -> Code Generation -> Runtime Library設定で/ MTフラグを使用してCRTをリンクすることができます言うように

はあなたに

+0

静的ライブラリオプション(/ MDの代わりに/ MTを使用するとプロジェクト設定の1つ)を使用すると、いくつかの問題が修正されますが、これらの問題はすべてではありません。 CRTライブラリを静的にリンクできるかどうかはわかりません。私はkernel32.dllが静的にリンクされていない(/ MTオプションでさえ)ようなものを思い出すようです。 – rcgldr

答えて

3

ありがとうございます。

これがプロジェクトのオプションでない場合は、代わりにCRTの再配布可能ファイルをインストールできます。

次の3つのファイルができます C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\1033

  • vcredist_arm.exe
  • vcredist_x64.exe
  • vcredist_x86.exe

はこれらがインストールされるように設計されたVisual StudioのこのバージョンのCRTを含むパッケージ、ありますあなたのソフトウェアを実行する必要のあるマシンで

アプリケーションを実行する前に、ターゲットシステムに適切な再配布可能ファイルをインストールしてください。たとえば、アプリケーションが32ビットの場合は、vcredist_x86.exeをインストールします。 64bitの場合はvcredist_x64.exeをインストールしてください。

通常、ソフトウェアのインストーラを作成するときには、これらのファイルもバンドルしてインストールプロセス中に実行します。

+0

ありがとう、/ MTの旗がトリックをしました。 cmakeのためにそれがあれば(MSVC) セット(CMAKE_CXX_FLAGS_DEBUG "$ {CMAKE_CXX_FLAGS_DEBUG}/MTdに") セット(CMAKE_CXX_FLAGS_RELEASE "$ {CMAKE_CXX_FLAGS_RELEASE}/MT") ENDIF() – Soccertrash

+1

がCMAKE_C_FLAGS_を更新することを忘れないでください*を介して行われますあなたのソリューションにCプロジェクトが関わっている場合もそうです。最近私はそれに遭遇した;) – badgerr

関連する問題