149 votes

Visual Studio ne peut pas construire à cause de rc.exe

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

J'ai créé un projet C++ vide et ajouté un main.cpp avec un retour et je n'arrive pas à le construire. 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 a-t-il un endroit dans VS2012 où je peux spécifier où trouver cet exécutable ? J'ai installé le SDK de Windows 7 et j'ai cet exécutable à l'emplacement suivant :

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

Je viens de Code::Blocks et j'utilise mingw-gcc sans aucun problème, mais dernièrement j'ai eu besoin de VS pour des implémentations gérées donc j'espère que quelqu'un a une idée.

1voto

user1439579 Points 76

Peut-être que le fichier du projet a été touché par VS2017. Alors quand vous liez le projet en 2015 "LINK : fatal error LNK1158 : cannot run 'rc.exe'" peut freiner la construction.

Dans vcxproj, essayez de :

1) remplacer :

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

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

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

1voto

snark Points 827

J'ai eu l'erreur du lien de l'OP sur rc.exe en essayant d'exécuter pip install à l'intérieur d'un bash dans un pipeline Azure DevOps que j'utilisais pour créer un paquet Python à partir de la source avec des extensions C++. J'ai pu résoudre le problème en ajoutant le chemin à rc.exe à l'intérieur de la bash juste avant d'appeler pip install comme ça :

PATH="/c/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64":$PATH

C'était à l'intérieur d'un Azure job qui utilisait vmImage: 'windows-2019' pour son agent, c'est-à-dire Windows Server 2019 avec Visual Studio 2019.

1voto

Dexter's Points 474

J'ai pu le faire fonctionner pour moi aussi de cette manière sous Windows

  1. Définissez votre variable d'environnement pour qu'elle pointe vers l'emplacement de votre rc.exe. en supposant que vous utilisez la version x86

C:\Program Fichiers (x86) \Windows Kits \10\bin\10.0.18362.0\x86

Vous pouvez facilement définir votre variable d'environnement en utilisant

C:> setx path "%path% ; C:\Program Fichiers (x86) \Windows Kits \10\bin\10.0.18362.0\x86 "

  1. Redémarrez votre Qt Creator
  2. Nettoyer et reconstruire

1voto

lygstate Points 56

Ma réponse à cette question.

Modifier le fichier C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vcvarsqueryregistry.bat Le contenu de :GetWin10SdkDir De

@REM ---------------------------------------------------------------------------
:GetWin10SdkDir

@call :GetWin10SdkDirHelper HKLM\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKLM\SOFTWARE > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE > nul 2>&1
@if errorlevel 1 exit /B 1
@exit /B 0

à

@REM ---------------------------------------------------------------------------
:GetWin10SdkDir

@call :GetWin10SdkDirHelper HKLM\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKLM\SOFTWARE > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE > nul 2>&1
@if errorlevel 1 exit /B 1
@setlocal enableDelayedExpansion
set HostArch=x86
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" ( set "HostArch=x64" )
if "%PROCESSOR_ARCHITECTURE%"=="EM64T" ( set "HostArch=x64" )
if "%PROCESSOR_ARCHITECTURE%"=="ARM64" ( set "HostArch=arm64" )
if "%PROCESSOR_ARCHITECTURE%"=="arm" ( set "HostArch=arm" )
@endlocal & set PATH=%WindowsSdkDir%bin\%WindowsSDKVersion%%HostArch%;%PATH%
@exit /B 0

Modifier cet endroit unique permettra le support de tous les sdk de Windows 10 ainsi que de toutes les cible de construction de visual studio, y compris

  • VS2015 x64 ARM Cross Tools Invite de commande
  • VS2015 x64 Outils natifs Invite de commande
  • VS2015 x64 x86 Cross Tools Invite de commande
  • VS2015 x86 ARM Cross Tools Invite de commande
  • VS2015 x86 Outils natifs Invite de commande
  • VS2015 x86 x64 Cross Tools Invite de commande

Ils travaillent tous.

0voto

Felix Xu Points 405

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

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

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X