Con Visual Studio 2015 non sono più in grado di compilare e collegare un semplice programma C++ utilizzando gli strumenti della riga di comando.Impossibile compilare e collegare un semplice programma C++ con gli strumenti della riga di comando di Visual Studio 2015
consideri main.cpp:
#include <stdlib.h>
int main() { return 0; }
Nelle versioni precedenti (ad esempio Visual Studio 2012) ho avuto modo di compilare e collegare facilmente main.cpp:
C:\Users\bkircher\src\test>cl main.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.61030 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
main.cpp
Microsoft (R) Incremental Linker Version 11.00.61030.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:main.exe
main.obj
e fatto.
Con Visual Studio 2015 tuttavia, non ho più corretta CRT includono e percorsi di libreria set:
C:\Users\bkircher\src\test>cl main.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
main.cpp
main.cpp(1): fatal error C1083: Cannot open include file: 'stdlib.h': No such file or directory
Capisco che Microsoft distribuisce il runtime C come nuovo componente del sistema operativo Windows, il CRT Universale.
Come descritto nella Introducing the Universal CRT, dovrei usare seguenti proprietà MSBuild per trovare i percorsi appropriati
$(UniversalCRT_IncludePath)
$(UniversalCRT_LibraryPath_x64)
Nonostante ciò, come faccio ad ottenere una corretta biblioteca e percorsi di inclusione per i sistemi di compilazione diversi devenv o MSBuild?
Per il gusto di farlo:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>set include
INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\wdf\ucrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um;C:\Program Files (x86)\Windows Kits\10\include\wdf\shared;C:\Program Files (x86)\Windows Kits\10\include\wdf\um;C:\Program Files (x86)\Windows Kits\10\include\wdf\winrt;
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>set lib
LIB=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64;C:\Program Files (x86)\Windows Kits\10\lib\wdf\ucrt\x64;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\wdf\um\x64;
LIBPATH=C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64;C:\Program Files (x86)\Windows Kits\10\UnionMetadata;C:\Program Files (x86)\Windows Kits\10\References;C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.UniversalApiContract\1.0.0.0;C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.FoundationContract\1.0.0.0;C:\Program Files (x86)\Windows Kits\10\References\indows.Networking.Connectivity.WwanContract\1.0.0.0;C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;
Grazie per il collegamento e le soluzioni fornite. La tua analisi era corretta. Ho disinstallato Windows SDK e Windows Driver Kit e tutto funziona come un fascino ancora –
'Fammi sapere se è stato utile. Grazie, ha aiutato a disinstallare WDK. – RIscRIpt
Nota anche la soluzione alternativa pubblicata sul sito Microsoft collegato nella risposta sopra. Rendendo nascosta la cartella wdf risolve anche questo problema. – patthoyts