LNK1158 не может запустить rc.exe x64 Visual Studio
Я пытаюсь скомпилировать простую программу в Visual Studio для 64-битной платформы. При попытке компилирования я получаю сообщение об ошибке: ССЫЛКА: фатальная ошибка LNK1158: не удается запустить 'rc.exe'
Я был во многих обсуждениях, где это указывает на копирование rc.exe и rcdll.dll из папки Windows Kits в папку VC/bin. Я сделал это безрезультатно. Мне приходит в голову, что моя версия Visual Studio может просто не искать в каталоге, я думаю, что он ищет этот файл rc.exe. Есть ли способ определить w/ в Visual Studio, какой каталог он ищет для этого исполняемого файла?
(Было высказано предположение, что эта проблема может быть дубликатом вопроса и ответа, предоставленных в разделе Невозможно скомпилировать с VC++/VS2010 для x64: LNK1158: невозможно запустить cvtres.exe. Однако, похоже, что это не так, потому что там путь был поврежден некоторыми службами NV, которые работали в системе. У меня нет этой проблемы, поскольку мой полный путь обнаруживается, когда я набираю echo %PATH%. При этом эта ссылка привела меня к правильному решению, учитывая ниже)
4 ответа
Ошибка действительно была, где я размещал файлы rc.exe и rcdll.dll. Поскольку я компилирую на 64-битную платформу, Visual Studio использует 64-битный кросс-компилятор, который находится не в $(VSInstallDir)\VC\bin, а в $(VSInstallDir)\VC\bin Папка \x86_amd64.
Таким образом, решением моей проблемы было скопировать rc.exe и rcdll.dll из папки C:\Program Files (x86)\Windows Kits\8.1\bin\x86 в папку $(VSInstallDir)\VC\bin\x86_amd64,
Это преодолело ту первую ошибку.
Однако при сборке выскочила новая ошибка: LNK1158: невозможно запустить cvtres.exe. В отличие от моей первой ошибки rc.exe, этот файл на самом деле уже находится в папке $(VSInstallDir)\VC\bin. Проблема в том, что кросс-компилятор ищет его в своем собственном каталоге. Поэтому я просто скопировал этот файл из папки $(VSInstallDir)\VC\bin в папку $(VSInstallDir)\VC\bin\x86_amd64.
Как только я это сделал, мой проект был построен и запущен.
Я столкнулся с этой ошибкой при компиляции кода Python в VS2015 Windows 10, скопированной на anaconda3.
rc.exe
rcdll.dll
от
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64
и вставил в папку установки Visual Studio
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
успешно сгенерировал код.
Определенно проще установить переменную env в папку, содержащую недостающие файлы, вместо копирования.
set WINKITS="C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x86"
set PATH=%WINKITS%;%PATH%
Измените 8.0 на версию ваших собственных комплектов Windows
Я столкнулся с этим при попытке построить
mod_wsgi
модуль питона. Самое чистое решение - сначала найти правильное
rc.exe
а затем добавьте эту папку в свой
PATH
переменная окружения. Как только вы перезапустите свой
cmd
, это должно решить проблему.
Как уже упоминалось, rc.exe можно найти в:
C:\Program Files (x86)\Windows Kits\10\bin\<version>\x64
Маловероятно, что этот файл меняется между версиями, но было бы важно выбрать
x64
если вы компилируете для 64 бит и
x86
для 32 бит.