2017-01-10 29 views
-1

C++プロジェクトでNuGetパッケージマネージャを試して問題が発生しました。私のVS 2017 RC(Platform Toolset v.141を含む)プロジェクトでは、特にGLEWとGLFWの2つのパッケージを追加しました。私は正常にヘッダを対応する含まれていますが、私のプロジェクトをリンクすることができませんでした - どうやらパッケージがpackages/<package>/build/native/libではVS 2017最新のVisual Studioツールセットで古いNuGetパッケージを使用する

のために構築されていなかったいくつかのv###サブフォルダがありますGLFWためGLEWためv100, v110v100, v110, v120, v140。私が理解していることから、これには対応するVSツールセットに対してコンパイルされたバイナリが含まれています。プロジェクトのプラットフォームツールセットをv141からv140に変更した場合(VS 2015もインストールされています)、GLFWのリンクエラーは消えてしまいます(VSはGLFWパッケージの対応するバイナリを見つけてしまいます)。 v110ツールセット、またはそこでダウングレードする必要はありません。

古いNuGet C++パッケージを最新のプラットフォームツールセットを持つプロジェクトにリンクする方法はありますか?どういうわけか、ソースからパッケージをビルドしても問題ありません。ある時点まで自動的に管理されるナゲットパッケージを使用している限り、私はうまくいきます。

答えて

1

NuGet C++の古いパッケージを最新のプラットフォームツールセットのプロジェクトにリンクできませんでした。

Visual Studioは複数のプラットフォームのツールセットをサポートしていますが、最新のプラットフォームのツールセットは下位互換性がありません。したがって、VS2015でプラットフォームツールセットv140を使用する場合、GLEW用のv100、v110はリンクエラーを生成します。

Visual Studio 2015でv100、v110 for GLEWを使用する最良の方法はv110ツールセットをインストールし、互換性のあるレガシーコード。古いプラットフォームのためのプログラムの設定に関する詳細情報については

、を参照してください。 https://msdn.microsoft.com/en-us/library/jj851139.aspx

0

V141のPlatformToolsetを含み一切のパッケージはないように思えます。

<ItemDefinitionGroup Label="Win32 and v140 and Release" Condition="'$(Platform.ToLower())' == 'win32' And '$(PlatformToolset.ToLower())' == 'v140' And ($(Configuration.ToLower().IndexOf('debug')) == -1)"> 

<ItemDefinitionGroup Label="Win32 and v140 and Release" Condition="'$(Platform.ToLower())' == 'win32' And '$(PlatformToolset.ToLower())' == 'v141' And ($(Configuration.ToLower().IndexOf('debug')) == -1)"> 

へ:あなたは、常に\ googletest.1.8.0.0 \ \ネイティブ\ googletest.targetsを構築パッケージに含まれて設定を編集して、V141のプロジェクトに対するV140対象バイナリをリンクする強制することができますしかしyoutのmilageは変わるかもしれない。

関連する問題