web-dev-qa-db-fra.com

Comment mettre à jour mon projet C ++ dans Visual Studio 2015 pour utiliser le nouveau Universal CRT?

Après que VS2015 ait mis à jour mon projet vers le nouveau jeu d'outils Platform v140, il ne parvient pas à se construire en raison d'une erreur de l'éditeur de liens: LNK1104 ne peut pas ouvrir le fichier 'libucrt.lib'.

Il semble que cette bibliothèque a été déplacée en raison du nouveau Universal CRT comme mentionné dans cet article: http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the- universal-crt.aspx? PageIndex = 2 .

Bien que l'article me dise vers quoi je dois me connecter maintenant, il ne fournit pas d'instructions sur la façon de le faire.

Ma solution génère un .exe et un .dll qu'elle utilise. Je ne sais pas quoi faire de la matrice décrite dans l'article ci-dessous.

DLL de publication (/ MD): msvcrt.lib vcruntime.lib ucrt.lib

Version statique (/ MT): libcmt.lib libvcruntime.lib libucrt.lib

15
Jesse Meyer

Lorsque vous convertissez votre projet, vous devez vous assurer que vous mettez à jour les inclus et les paramètres de l'éditeur de liens pour pointer vers le nouveau CRT.

Pour les inclusions, ajoutez les éléments suivants:

$(UniversalCRT_IncludePath)

Pour le lien, ajoutez l'un des éléments suivants en fonction de votre processeur cible:

$(UniversalCRT_LibraryPath_x86)
$(UniversalCRT_LibraryPath_x64)
$(UniversalCRT_LibraryPath_arm)
11
Ryan Bemrose

La variable intégrée $(LibraryPath) résout tous les chemins de bibliothèque nécessaires pour créer une application dans Visual Studio, y compris les chemins UCRT dans VS 2015.

Remarque: vous pouvez également mettre à jour include path, la variable intégrée portable pour cela est: $(IncludePath).

Ou mieux encore, si vous n'avez besoin d'aucune bibliothèque ou n'incluez pas la personnalisation du chemin, utilisez des valeurs par défaut (sélectionnez <inherit from parent or defaults>).

Remarque 2: vous pouvez ajuster les chemins pour plusieurs projets et plusieurs cibles en même temps, sélectionnez simplement plusieurs projets, puis sélectionnez "propriétés".

3
rustyx

Par défaut, si vous compilez votre projet avec vs2015, Universal CRT sera utilisé. (Rien de spécial à faire)

Mais si vous souhaitez établir une liaison statique (et vous débarrasser de la dépendance ucrt) - lisez cet article:

dépendances d'exécution de Visual studio 2015 ou comment se débarrasser de Universal CRT?

2
TarmoPikaro

J'ai téléchargé le SDK 10.0.10586.0, qui contient maintenant la bibliothèque libucrt.lib dans C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64. Mais je ne peux pas obtenir l'éditeur de liens pour localiser cette bibliothèque; il utilise 10240 (la version installée précédente).

Les macros mentionnées ci-dessus, $ (LibraryPath) et $ (UniversalCRT_LibraryPath_x64), font toutes deux référence à C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64. Je ne sais pas comment changer les valeurs de ces macros, ce qui est probablement nécessaire pour que l'éditeur de liens utilise la bibliothèque appropriée.

Windows 7 Pro, 64 bits, mise à jour Visual Studio 2015 1. Liaison de bibliothèques statiques, C++ et projet Intel Fortran.

2
Woody20