2017-01-10 1 views
-1

C++ 프로젝트에서 NuGet 패키지 관리자를 사용하여 문제가 발생했습니다. 내 VS 2017 RC (Platform Toolset v.141 포함) 프로젝트에서는 GLEW와 GLFW라는 두 개의 패키지를 추가했습니다. 나는 성공적 헤더를 해당 포함되어 있지만 내 프로젝트를 연결하지 못했습니다 - 분명히 패키지가 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 패키지에서 해당 이진 파일을 찾았으므로) GLEW는 여전히 링크되지 않습니다. v110 도구 모음이거나 그곳에서 다운 그레이드하려고하지 않습니다.

현대적인 플랫폼 도구 세트가있는 프로젝트에 이전 NuGet C++ 패키지를 연결하는 방법이 있습니까? 어떻게 든 가능하다면 소스로부터 패키지를 빌드하는 것은 괜찮습니다. 어떤 시점까지 자동으로 관리되는 nuget 패키지를 유지하는 한 괜찮습니다.

답변

1

이전 NuGet C++ 패키지를 최신 플랫폼 도구 세트가있는 프로젝트에 연결할 수 없습니다.

Visual Studio는 다중 플랫폼 도구 세트를 지원하지만 최신 플랫폼 도구 세트는 이전 버전과 호환되지 않습니다. 따라서 GLEW 용 v100, v110은 VS 2015의 플랫폼 도구 세트 v140을 사용할 때 링크 오류를 생성합니다.

Visual Studio 2015에서 GLEW 용 v100, v110을 사용하는 가장 좋은 방법은 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 다를 수 있습니다.