web-dev-qa-db-fra.com

Visual Studio ne peut pas générer à cause de rc.exe

J'ai effectué une recherche en ligne et je n'ai rien trouvé qui ressemble à mon problème.

J'ai créé un projet C++ vide et ajouté un fichier main.cpp avec un retour et je ne parviens pas à le générer. Voici le message que je reçois:

1>------ Build started: Project: Project1, Configuration: Debug Win32 ------
1>LINK : fatal error LNK1158: cannot run 'rc.exe'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Y at-il quelque part dans VS2012 où je peux spécifier où trouver cet exécutable? J'ai installé le Kit de développement logiciel (SDK) de Windows 7 et j'ai ce fichier exécutable sur:

C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin

Je viens de Code :: Blocks et j'utilise mingw-gcc sans problème, mais dernièrement, j'avais besoin de VS pour les implémentations gérées. J'espère que quelqu'un aura une idée.

109
Patrick.SE

Trouvé ceci sur Google ... Je suppose que dans votre cas, vous copiez rc.exe et rcdll.dll vers visual studio 2012\vc\bin ou à tout autre endroit où vous l'avez installé:

Partie 2: FIX LINK: fatal error LNK1158: cannot run ‘rc.exe’

Ajoutez ceci à vos variables d'environnement PATH:

C:\Program Files (x86)\Kits Windows\8.0\bin\x86

Copiez ces fichiers:

rc.exe
rcdll.dll

De

C:\Program Files (x86)\Kits Windows\8.0\bin\x86

À

C:\Fichiers de programme (x86)\Microsoft Visual Studio 11.0\VC\bin

Ou j'ai aussi trouvé ceci:
Microsoft a omis quelques éléments de son package MSVT. Puisque personne ne sait s'ils ont été oubliés par erreur ou pour des raisons de licence, personne avec MSVC n'est trop intéressé à les donner. Quelques recherches sur Google révèlent des sources difficiles. Heureusement, Microsoft a finalement résolu le problème et bien d’autres encore.

http://msdn.Microsoft.com/vstudio/express/support/faq/default.aspx#pricing

http://msdn.Microsoft.com/vstudio/express/support/install/

Une bonne quantité de fichiers MSVT manquants sont présents, mais les fichiers SDK manquants ne le sont pas.

et ça:
J'ai eu le même problème que j'ai résolu en faisant ceci:

  1. Installation de Microsoft .Net Framework 2.0
  2. Ajout du chemin des fichiers .NET Framework (pour moi "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727") aux paramètres globaux du compilateur> Programmes> Chemins supplémentaires dans Code :: Blocks.

Maintenant, je peux construire et lier des fichiers de ressources sans erreurs.

196
Kat Cox

Nous avons rencontré ce problème avec nos versions CMake/Visual Studio 2015 après avoir également installé VS2017 sur la machine. Dans notre cas, la solution correcte consiste à spécifier la version de Kit Windows (8.1) dans l'invite de commandes Visual Studio. Sinon, vous obtenez le Kit Windows 10 par défaut, qui n'inclut pas rc.exe dans le répertoire bin.

par exemple. Menu Démarrer-> Visual Studio 2015-> Invite de commande d'outils natifs VS2015 x64

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" AMD64 8.1

Notez l'option 8.1 à la fin

57
MattAU

D'après ce que j'ai trouvé, si vous avez un système d'exploitation Windows 7, procédez comme suit pour résoudre le problème:

1) Accédez à C:\Program Files (x86)\Microsoft SDK\Windows\v7.1A\Bin.

2) puis copiez RC.exe et RcDll à partir de ce fichier

3) allez dans C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin et collez-y les deux fichiers que vous avez copiés.

J'ai eu le même problème, et la solution affichée ci-dessus ne fonctionnait pas. Ma solution en a été tirée, et cela a fonctionné pour moi. Si les solutions ci-dessus ne fonctionnent pas, vous pouvez essayer celui-ci.

30
Tony

Cette erreur rc.exe peut se produire si les versions du compilateur Visual C++ et du Kit de développement logiciel (SDK) de Windows 10 ne correspondent pas à la même année Visual Studio.

Si vous avez Visual Studio 2017 et que vous avez installé Build Tools 2015 sans choisir d'installer son propre SDK Windows 2015 (l'installation par défaut ne l'installe pas!) Et que vous essayez de l'utiliser pour la compilation, vous risquez de rencontrer ce problème.

Dans mon cas, j'avais déjà Visual Studio 2017. Lorsque j'ai essayé d'utiliser Build Tools 2015 pour compiler une bibliothèque python (ou probablement n'importe quel programme), cette même erreur 'rc.exe' s'est produite. J'ai lu que le compilateur VS2015 14.0 C++ peut créer un problème s'il tente d'utiliser le SDK Windows 10 de Visual Studio 2017.

J'ai désinstallé Build Tools 2015 et l'ai réinstallé, cette fois en tant qu'installation personnalisée, en choisissant d'installer les deux composants Visual C++ et Windows 10 SDK. Cela a résolu le problème.

16
OrangeSherbet

Dans mon cas, j'ai eu une erreur de combinaison entre les projets créés dans VS2015 et VS2017. Dans mon fichier .vcxproj, il y a cette section appelée PropertyGroup Label = "Globals">. J'ai eu une section pour TargetPlatformVersion = 10.0.15063.0. Lorsque j'ai supprimé la TargetPlatformVersion, le problème a été résolu.

Désolé, je ne peux pas copier et coller le bloc ici, mais le format de codage stackoverflows ne le permettait pas.

11
Todd Rupper

Je suis sous Windows 7 x64 et Visual Studio 2017. Je reçois cette erreur en essayant de compiler un script Cython. Voilà comment j'ai résolu: j'ai copié et collé rc.exe et rcdll.dll à partir de:

C:\Program Files (x86)\Windows Kits\8.1\bin\x86

à

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_AMD64
7
alfredopacino

Voici mon cas presque similaire:
J'ai un projet de travail VC2010 sous Win7 32 bits. J'effectue une installation propre de VC2013 sous Win8.1 64 bits Après la conversion réussie de mon projet de VC2010 à VC2013, lors de la 1ère compilation, le nombre d'erreurs suivant s'élevait:
Terminé la génération du code
LINK: erreur fatale LNK1158: impossible d'exécuter 'rc.exe'

Solution 1:
Supprimer la ligne entière “<ExecutablePath Condition =” ... ”> ... </ ExecutablePath>” dans l'élément “<PropertyGroup>” du fichier NameOfYourSolution.vcxproj du bloc-notes avant d'exécuter VC2013.
Solution 2:
Copiez seulement deux fichiers: rc.exe et rcdll.dll à partir de “c:\Programmes (x86)\Windows Kits\8.1\bin\x86 \” dans “c:\Programmes (x86)\Microsoft Visual Studio 12.0\VC\bin\”et la compilation sera réussie !!
Remarque:
a) Il n'est pas nécessaire de toucher les variables PATH ou autres variables d'environnement Windows ou VC.
b) “Jeu d’outils de la plateforme” (Pages de propriétés du projet -> Propriétés de la configuration -> Général) sera automatiquement réglé sur “Visual Studio 2013 (v120)” (ne le changez pas en “Visual Studio 2010” pour pouvoir continuer à développer votre projet sous les concepts VC2013)

4
Angel T

Dans mon cas, l'erreur était due à un mauvais réglage dans vcxproj. Le vcxproj venait d'un tiers, donc je ne sais pas comment il est arrivé dans cet état.

Plus précisément, pour l'un des combos plate-forme/profil, le dossier de la plate-forme était absent du dossier bin du SDK Windows:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 <ExecutablePath>$(VCInstallDir)bin\x86_AMD64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin\x86;

est correct, où

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 <ExecutablePath>$(VCInstallDir)bin\x86_AMD64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin;

était incorrect. Vous devrez peut-être faire défiler l'écran jusqu'à la fin des zones de code pour voir la différence.

Notez également que pour une raison étrange, $ (WindowsSdkDir) bin\x64; N'a pas travaillé pour moi. Essayé de comprendre pourquoi, quand rc.exe existe définitivement dans ce dossier, mais j’ai abandonné.

À mon avis, les solutions des affiches précédentes qui impliquent de copier rc.exe dans tous les sens sont fausses, car votre projet ne fonctionnera pas sur la machine de quelqu'un d'autre. Si vous corrigez correctement les chemins dans le projet, cela devrait fonctionner sur tout ordinateur disposant d'une installation correcte du SDK Windows.

4
Steve

Je suis sous Windows 10 x64 et Visual Studio 2017. J'ai copié et collé les fichiers rc.exe et rcdll.dll à partir de:

C:\Program Files (x86)\Windows Kits\8.1\bin\x86

à

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\AMD64

ça marche avec: (qt creator 5.7.1)

3
dodo

Cela pourrait être un peu obsolète. Mais si la copie des fichiers rc.exe et exdll.dll ne fonctionnait pas, il est possible que Windows sdk ne soit pas installé correctement, même si le dossier Windows sdk existe. Vous pouvez mettre à jour le sdk for win 8 à la page suivante: http://msdn.Microsoft.com/en-US/windows/hardware/hh85236 Après avoir réinstallé le sdk, le problème serait résolu résolu. Assurez-vous également que le jeu d’outils de la plate-forme est défini correctement.

3
beebee

J'utilise Windows 7 avec VS 2013 (mise à jour 3) et Intel Parallel Studio XE Composer Edition pour Fortran Windows (mise à jour 5). Hors de la boîte j'ai eu le même problème.

Une fois que j'ai résolu le problème manquant rc.exe, j'ai eu un autre problème. L'éditeur de liens manquait à kernel32.lib.

J'ai corrigé les deux problèmes en mettant à jour Intel Composer Options (TOOLS-> Options ...-> Intel Composer XE-> Visual Fortran-> Compilers).

Pour l'onglet Win32, j'ai ajouté:

Exécutables: C:\Fichiers de programme (x86)\Kits Windows\8.0\bin\x86; (juste avant $ (PATH))

Bibliothèques: C:\Fichiers de programme (x86)\Kits Windows\8.0\Lib\win8\um\x86; (à la fin)

Pour l'onglet x64, j'ai ajouté:

Exécutables: C:\Fichiers de programme (x86)\Kits Windows\8.0\bin\x64; (juste avant $ (PATH))

Bibliothèques: C:\Fichiers de programme (x86)\Kits Windows\8.0\Lib\win8\um\x64; (à la fin)

Mise à jour...

Il me manquait également des fichiers d’en-tête du SDK (winver.h et winapifamily.h). J'ai ajouté ce qui suit à la même zone OUTILS-> Options ....

Pour les onglets win32 et x64

Inclut: C:\Fichiers de programme (x86)\Kits Windows\8.0\Include\um; C:\Fichiers de programme (x86)\Kits Windows\8.0\Include\shared;

2
Jeremy Whitcher

J'ai rencontré ce problème récemment. J'ai les VS 2015 et VS 2017 installés et les kits Windows 8.1 et 10 installés.

L'invite de commande de VS 2017 fonctionne comme prévu, le fichier rc.exe est visible. Dans VS 2015, ce n'est pas vrai. En fait, le script vcvarsall.bat de VS 2015 ajoute un chemin d'accès au kit Windows 10 à la variable PATH, mais un chemin d'accès légèrement incorrect. Il ajoute le chemin à

"C:\Program Files (x86)\Windows Kits\10\bin\x86"

alors que le chemin réel est

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86"

Il semble que la mise à jour du kit Windows 10 (ou l'installation de VS 2017) ait été à l'origine de ce problème.

La solution est donc simple: il suffit de créer des liens symboliques dans le dossier "C:\Program Files (x86)\Windows Kits\10\bin" pointant vers les dossiers correspondants du dossier sous-jacent, par exemple. un lien symbolique "x86" pour le dossier "10.0.17763.0\x86", "x64" pour "10.0.17763.0\x64" etc.

2
Artyom Chirkov

J'ai eu le même problème sur VS 2013 et j'ai pu le résoudre en modifiant le Platform Toolset.

Vous pouvez le trouver dans les paramètres du projet, en général.

Par exemple. Le passage de Platform Toolset à VS 2010 obligera VS à utiliser le SDK Windows\v7.0A.

Vous pouvez vérifier quel chemin SDK est utilisé en l'ajoutant à votre événement de pré-construction:

echo using SDK $(WindowsSdkDir)
2
laktak

Je viens de comprendre qu'un projet (sur les 3 au total) de ma solution VS2010 (SDK7.1) (les projets sont liés dans une chaîne de dépendance linéaire séquentielle) contenait un fichier .rc vide. La suppression du fichier .rc vide (du projet, sans le supprimer) a résolu le problème "Erreur fatale LNK1158: ... cvtres.exe".

Mise à jour: La copie suivante a résolu le problème:

xcopy "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_AMD64\"

Cela permettra à WinSDK7.1, via MSBuild, de pouvoir compiler des fichiers .rc dans les exécutables.

2
Sterge

Si vous avez vraiment besoin d'utiliser le SDK Windows 10 avec Visual Studio 2015, vous devez télécharger une version plus ancienne sur sdk-archive . La version plus récente du SDK a modifié l'emplacement de l'exécutable rc et MSBuild de Visual Studio 2015 mise à jour 3 (dernière version) ne parvient pas à le localiser. Au moins la version 10.0.14393.795 du SDK Windows est toujours compatible avec Visual Studio 2015.

1
Xavier Bigand

Ajouter à la fenêtre de votre variable d'environnement le chemin sdk 8.1

C:\Program Files (x86)\Kits Windows\8.1\bin\x64

puis ouvrez la commande Outils natifs de Visual Studio x64 Native et entrez

vcvarsall.bat

1
Khan

C'est encore plus simple qu'avec Visual Studio 2017. Suivez ces instructions: https://docs.Microsoft.com/en-us/visualstudio/install/modify-visual-studio pour modifier à l'aide de Microsoft Visual Studio Installer.

Une fois dans Microsoft Visual Studio Installer, cliquez sur Modifier sous votre package Visual Studio installé, assurez-vous que le développement du bureau avec C++ est coché et que les supports MFC et ATl (x86 et x64) sont résumés.

1
Bluto

Peut-être que le fichier de projet a été touché par VS2017. Ensuite, lorsque vous liez le projet en 2015, "LINK: erreur irrécupérable LNK1158: impossible d'exécuter 'rc.exe'" peut ralentir la construction.

Dans vcxproj, essayez de:

1) remplacer:

<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion> avec: <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>

2) supprimer: <VCProjectVersion>15.0</VCProjectVersion>

3) remplacer: <PlatformToolset>v141</PlatformToolset> par: <PlatformToolset>v140</PlatformToolset>

1
user1439579

Cela peut être dû à un vcxproj qui provenait de versions précédentes de Visual Studio OR en modifiant le jeu d'outils de la plate-forme dans les propriétés de configuration -> Général.

Si oui, solution possible:

1) Allez dans Propriétés de configuration -> Répertoires VC++

2) Sélectionnez le menu déroulant pour les répertoires exécutables

3) Sélectionnez "Hériter du parent ou du projet par défaut"

1
Gunnar

Dans mon cas, j'ai installé le SDK Windows 10586 via Visual Studio 2015 -> Modify , les chemins suivants sont installés.

C:\Program Files (x86)\Kits Windows\10\bin\arm64\rc.exe

C:\Program Files (x86)\Kits Windows\10\bin\x64\rc.exe

C:\Program Files (x86)\Kits Windows\10\bin\x86\rc.exe

0
Felix Xu

Pour Visual Studio Community 2019, copier les fichiers dans les réponses ci-dessus (rc.exe rcdll.dll) à C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\bin\Hostx86\x86 a été très utile.

0
Rahul Kumar