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 бит.

Другие вопросы по тегам