Не удается запустить rc exe visual studio
Код работает, но я не понимаю, почему я не могу запустить .exe, созданный из скомпилированного проекта c с использованием gcc (что является моей целью).
Я тоже пытался работать от имени администратора.
Кто-нибудь может мне объяснить?
2 ответа
(Преобразование моего комментария в ответ)
Код работает, но я не понимаю, почему я не могу запустить .exe, созданный из скомпилированного проекта c с использованием gcc (что является моей целью).
Я подозреваю, что проблема в том, что ваш скомпилированный исполняемый файл gcc во время выполнения имеет зависимости от файлов, расположенных в том же каталоге файловой системы, что и ваш скомпилированный gcc исполняемый файл, и ссылается на эти файлы только по их коротким именам (например, " someFile.txt ") вместо их имен файлов с абсолютным путем (например, "C:\my-gcc-program\bin\someFile.txt" ), тогда ОС просматривает рабочий каталог этого процесса (также известный как текущий каталог).
Обратите внимание, что когда ваша программа использует Process.Start(String fileName) , тогда вновь созданный (дочерний) процесс ОС наследует рабочий каталог вашего процесса, а не сбрасывается в родительский каталог имени исполняемого файла нового процесса!
Поэтому, если ваш дочерний процесс ожидает, что "someFile.txt" находится в его рабочем каталоге, вам необходимо запустить дочерний процесс с правильным рабочим каталогом, а не наследовать его от вашего процесса.
Вы можете сделать это двумя разными способами, каждый из которых требует от вас использования ProcessStartInfo вместо любой из перегрузок Process.Start , которые принимают String fileName .
Вариант 1. Установите ProcessStartInfo.WorkingDirectory напрямую:
Параметр UseShellExecute создает новый процесс, как если бы пользователь запустил его через оболочку своей ОС, например cmd.exe или Explorer.exe , а не как дочерний процесс вашего процесса. (Одним из многих) эффектов этой опции является то, что ОС автоматически устанавливает рабочий каталог этого нового процесса за вас.
Обратите внимание, что при использовании UseShellExecute == true вы все равно должны указать действительный путь WorkingDirectory , однако его цели меняются:
- Свойство WorkingDirectory ведет себя иначе при UseShellExecute is true , чем при UseShellExecute is false .
- Когда UseShellExecute истинно, свойство WorkingDirectory указывает местоположение исполняемого файла.
- Если WorkingDirectory - пустая строка, считается, что текущий каталог содержит исполняемый файл.
- При UseShellExecute is true рабочий каталог приложения, запускающего исполняемый файл, также является рабочим каталогом исполняемого файла.
Я размещаю здесь код, который я написал в событии нажатия кнопки. Может быть кому-то пригодится
Я искал в интернете и не мог найти ничего, что напоминало к моему вопросу.
есть ли где-нибудь в VS2012, где я могу указать, где найти этот исполняемый файл? Я установил Windows 7 SDK, и у меня есть этот исполняемый файл по адресу:
Я пришел из кода:: блоки и с помощью mingw-gcc без каких-либо проблема, но в последнее время мне нужен VS для управляемых реализаций, поэтому я надеюсь, что у кого-то есть идея.
скопировать эти файлы:
C:\Program файлы (x86)\Windows Kits\8.0\bin\x86
C:\Program файлы (x86)\Microsoft Visual Studio 11.0\VC\bin
или я тоже нашел это:
Microsoft оставила несколько вещей из своего пакета MSVT. Поскольку никто не знает, были ли они оставлены по ошибке или по причинам лицензии, никто с MSVC не слишком заинтересован в их выдаче. Несколько поисковых запросов в Google выискался какой-то хитрый источников. К Счастью, Microsoft наконец-то поумнел и решил эту проблему и многие другие.большое количество отсутствующих файлов MSVT есть, но отсутствующие файлы SDK нет.
и так:
У меня та же проблема, которую я решил делать так:- установка Microsoft .Net Framework 2.0
- добавление пути к файлам .NET Framework (для меня "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727") к глобальным настройкам компилятора > программы > дополнительные пути в коде:: блоки.
теперь я могу создавать и связывать файлы ресурсов без ошибок.
мы столкнулись с этой проблемой с нашими сборками CMake / Visual Studio 2015 после установки VS2017 на машине. Правильное решение в нашем случае-указать версию Window Kit (8.1) в командной строке Visual Studio - в противном случае вы получите комплект Windows 10 по умолчанию, который не включает rc.exe в папке bin.
например меню Пуск - > Visual Studio 2015 - > VS2015 x64 Native Tools Command Prompt
обратите внимание на опцию 8.1 на конец
из того, что я нашел, если у вас есть ОС windows 7, выполнение следующих шагов устранит проблему:
1) перейти к C:\Program файлы (x86)\Microsoft SDKs\Windows\v7.1A\Bin
2) затем скопируйте RC.exe и RcDll из этого файла
3) перейти к C:\Program файлы (x86)\Microsoft Visual Studio 12.0\VC\bin и вставьте в него два скопированных файла.
У меня была та же проблема, и вышеприведенное решение не сработало. Мое решение было получено из него, и это сработало для меня, если те, что выше, не работают, вы можете попробовать это.
в моем случае у меня была ошибка смешивания и сопоставления между проектами, созданными в VS2015 и VS2017. В моем.файл vcxproj, есть этот раздел под названием PropertyGroup Label= "Globals">. У меня был раздел для TargetPlatformVersion=10.0.15063.0. Когда я удалил TargetPlatformVersion, это решило проблему.
Извините, я не могу скопировать и вставить блок здесь, но формат кодирования stackoverflows этого не позволил.
Если у вас есть Visual Studio 2017, и вы установили Build Tools 2015, не выбрав для установки свой собственный 2015 Windows SDK (установка по умолчанию не устанавливает его!), и пытаются использовать его для компиляции, вы можете столкнуться с этой проблемой.
Я читал, что компилятор VS2015 14.0 C++ может дать сбой, если он попытается использовать Windows 10 SDK из Visual Studio 2017.
в моем случае у меня уже была Visual Studio 2017. Когда я пытался использовать Build Tools 2015 для скомпилируйте библиотеку python (или, возможно, любую программу), этот же 'rc.произошла ошибка exe. Я удалил Build Tools 2015 и переустановил его, на этот раз как пользовательскую установку, выбрав установить и компоненты visual C++ и Windows 10 SDK. Это исправило проблему.
во всяком случае, я думаю, что это указывает на это 'rc.ошибка exe может легко всплывать, если компилятор Visual C++ и версии Windows 10 SDK не соответствуют одному и тому же году Visual Studio, по-видимому.
Я на Windows 7 x64 и Visual Studio 2017. Я получаю эту ошибку, пытаясь скомпилировать сценарий cython. Вот как я решил: Я скопировал и вставил rc.exe и rcdll.dll от:
до
вот мой почти аналогичный случай:
У меня есть рабочий проект VC2010 под Win7 32bit. Я делаю чистую установку VC2013 под Win8. 1 64bit После успешного преобразования моего проекта из VC2010 в VC2013, во время 1-й компиляции возникает следующая ошибка:
Закончена генерация кода
Ссылка: неустранимая ошибка LNK1158: не удается запустить ' rc.exe'Решение 1:
Удалить всю строку " . " в элемент "" в NameOfYourSolution.файл vcxproj в блокноте перед запуском VC2013
решение 2:
Скопировать только два файла: радиоуправляемый.exe и rcdll.dll от "c:\Program файлы (x86)\Windows Kits\8.1\bin\x86\" to "c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\" и компиляция будет успешной!!
Примечание:
a) не нужно касаться какого-либо пути или других переменных среды Windows или VC.
b) "набор инструментов платформы" (страницы свойств проекта - > Свойства конфигурации - > общие) будет автоматически установлен в " Visual Studio 2013 (v120) "(не изменить его на" Visual Studio 2010", чтобы иметь возможность продолжать развивать свой проект в соответствии с концепциями VC2013)в моем случае ошибка была вызвана плохой настройкой в vcxproj. Vcxproj был от третьей стороны, поэтому я не уверен, как он попал в это состояние.
в частности, для одного из комбо платформы/профиля папка платформы отсутствовала в папке Windows SDK bin:
правильно, где
был неверным. Возможно, потребуется прокрутить до конца поля кода, чтобы увидеть разницу.
обратите внимание также, что для некоторых странных причина $(WindowsSdkDir) bin\x64; не работает для меня. Попытался выяснить, почему, когда rc.exe определенно существует в этой папке, но я сдался.
на мой взгляд, решения из предыдущих плакатов, которые включают копирование rc.exe везде ошибаются, потому что ваш проект не будет работать на чужой машине. Если вы исправите пути в проекте правильно, он должен работать на любой машине с правильной установкой Windows SDK.
Я использую Windows 7 с VS 2013 (обновление 3) и Intel Parallel Studio XE Composer Edition для Fortran Windows (Обновление 5). Из коробки у меня была такая же проблема.
Как только я исправил недостающий rc.проблема exe у меня была другая проблема. Компоновщик отсутствовал kernel32.движение за освобождение.
я исправил обе проблемы, обновив параметры Intel Composer (TOOLS - >Options. - >Intel Composer XE - > Visual Fortran - > компиляторы).
для вкладки Win32 I добавлено:
исполняемые файлы: C:\Program файлы (x86)\Windows Kits\8.0\bin\x86;(непосредственно перед $(путь))
библиотеки: C:\Program файлы (x86)\Windows Kits\8.0\Lib\win8\um\x86;(конец)
для вкладки x64 я добавил:
исполняемые файлы: C:\Program файлы (x86)\Windows Kits\8.0\bin\x64;(непосредственно перед $(путь))
библиотеки: C:\Program файлы (x86)\Windows Kits\8.0\Lib\win8\um\x64;(конец)
обновление.
Мне также не хватало некоторых заголовочных файлов SDK (winver.h и winapifamily.ч.) Я добавил следующее к тем же инструментам->параметры. область.
для вкладок win32 и x64
включает в себя: файлы C:\Program (х86) наборы папку\Windows\8.0\включить\ЭМ;файлы C:\Program (х86) наборы папку\Windows\8.0\включить\общий;
Я только что выяснил один (из 3 в общей сложности) проектов в моем решении VS2010 (SDK7.1) (проекты связаны в последовательной цепочке линейных зависимостей), имел .rc-файл в файлах проекта, который был пуст. Удаление пустой .rc-файл (из проекта, не удаляя его) решил "фатальную ошибку LNK1158: . cvtres.проблема ехе".
обновление: следующая копия исправила проблему:
Это позволит WinSDK7 .1, через MSBuild, чтобы иметь возможность компилировать.дистанционное управление файлы в исполняемые файлы.
Это может быть вызвано vcxproj, который возник в предыдущих версиях Visual Studio или изменил набор инструментов платформы в свойствах конфигурации -> общие.
Если да, то возможное решение:
1) Перейдите в свойства конфигурации - > каталоги VC++
2) Выберите выпадающее меню для исполняемых каталогов
3) Выберите "наследовать от родителя или проекта по умолчанию"
Я на Windows 10 x64 и Visual Studio 2017. Я скопировал и вставил rc.exe и rcdll.dll от:
до
это работает с: (Qt creator 5.7.1)
добавить в окно переменной среды sdk 8.1 путь
C:\Program файлы (x86)\Windows Kits\8.1\bin\x64
Я создал клиент-серверное приложение на языке C++ с помощью Visual Studio.
Как я могу запустить exe-файл, не устанавливая ничего на компьютер?
- приложение не удалось правильно инициализировать (0xc0000135).
- это приложение не удалось запустить из-за неправильной конфигурации приложения. Переустановка приложения может устранить эту проблему.
- система не может выполнить указанную программу.
- самым простым решением является изменение динамического связывания библиотек времени выполнения на статическое связывание. Перейдите в свойства проекта и в разделе C / C++ > генерация кода вы найдете опцию библиотека времени выполнения. Вам нужно изменить его с Multi-threaded DLL (/MD) на Multi-threaded (/MT) . Другое возможное решение-убедиться, что на целевой машине установлена правильная версия распространяемого пакета Microsoft VC++.
Но ваше приложение может зависеть от другие библиотеки DLL также. В случае, если вы хотите узнать, каковы зависимости вашей программы, есть отличная утилита под названием Уокер зависимости, это поможет вам в этой и многих других ситуациях:)
Я не видел этой конкретной ошибки раньше, обычно это ошибка вокруг отсутствующей DLL (Windows redistributable). Предполагая, что на самом деле нет проблем с конфигурацией, у вас есть два варианта:
1) измените режим компиляции с многопоточной библиотеки DLL на многопоточную. Это можно сделать в разделе C++ свойств проекта в разделе генерация кода. В многопоточном режиме ваш двоичный файл будет статически связан с распространяемым файлом windows. Это, вероятно, то, что вы хотеть.
2) Установите распространяемый пакет windows на целевой машине. Это, вероятно, не нормально, если вы заявляете, что не хотите ничего устанавливать на целевой машине.
Предупреждение о опции 1, разные версии windows имеют разные версии распространяемого пакета. Можно столкнуться с узкоспециализированной средой, в которой статически связанная программа будет вести себя не так, как ожидалось.
Я развернул свою программу в релизе вместо отладки, и exe теперь работает на другом компьютере
Похоже, вам не хватает некоторых DLL-файлов. Обязательно скопируйте соответствующие dll вместе с exe.
Я поискал в Интернете и не нашел ничего похожего на мою проблему.
Есть ли где-нибудь в VS2012, где я могу указать, где найти этот исполняемый файл? Я установил Windows 7 SDK, и у меня есть этот исполняемый файл по адресу:
Я пришел из Code :: Blocks и без проблем использую mingw-gcc, но в последнее время мне нужен VS для управляемых реализаций, поэтому я надеюсь, что у кого-то есть идея.
К вашему сведению - не работает и в Visual Studio 2013 Professional :( но похоже, что проблема заключается в пути к каталогу Windows SDK (или Windows Kits, как бы они их ни называли на этой неделе). Переменная $ (WindowsSdkDir) не установлена в каталог WindowsKits, вместо этого устанавливается каталог WindowsSDK, который имеет «минимальное» содержимое.Нашел это в Google . Я предполагаю, что в вашем случае вы скопируете rc.exe и rcdll.dll туда visual studio 2012\vc\bin или где бы вы его ни установили:
Добавьте это в переменные среды PATH:
C: \ Program Files (x86) \ Комплекты Windows \ 8.0 \ bin \ x86
Скопируйте эти файлы:
C: \ Program Files (x86) \ Комплекты Windows \ 8.0 \ bin \ x86
C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin
Или я также обнаружил это:
Microsoft упустила несколько вещей из своего пакета MSVT. Поскольку никто не знает, были ли они исключены по ошибке или по лицензионным причинам, никто из MSVC не слишком заинтересован в их выдаче. Несколько поисковых запросов в Google обнаруживают несколько хитрых источников. К счастью, Microsoft наконец поумнела и решила эту и многие другие проблемы.Существует большое количество недостающих файлов MSVT, но отсутствующих файлов SDK нет.
и это: у
меня была та же проблема, которую я решил, сделав это:- Установка Microsoft .Net Framework 2.0
- Добавление пути к файлам .NET Framework (для меня "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727") в Глобальные настройки компилятора> Программы> Дополнительные пути в Code :: Blocks.
Теперь я могу без ошибок создавать и связывать файлы ресурсов.
Спасибо, это был простой способ копирования исполняемых файлов rc из корзины SDK в корзину VS. Ну, большая часть этого ответа была цитатой . так что просто чтобы уточнить: «У меня была та же проблема, которую я решил, сделав это:» - это не я, а кое-что, что я нашел в опубликованном Вопрос: почему вы используете файлы x86 rc.exe и rcdll.dll, а не версии x64? Ну, я просто скопировал и вставил ответы, которые нашел . но вы бы использовали x86 при 32-битной установке (что могло бы быть даже в 64-битной системе), и вы бы использовали x64 при 64-битной установке . угадайте это зависит от того, какая версия файла, по его словам, у вас должна бытьМы столкнулись с этой проблемой в наших сборках CMake / Visual Studio 2015 после установки VS2017 на компьютер. Правильным решением в нашем случае является указание версии Window Kit (8.1) в командной строке Visual Studio - в противном случае вы получите комплект Windows 10 по умолчанию, который не включает rc.exe в каталог bin.
например, меню Пуск-> Visual Studio 2015-> VS2015 x64 Командная строка собственных инструментов
Обратите внимание на опцию 8.1 на конце
Хотя у меня такая же ситуация (Win10 с VS2015 И VS2017 также установлены), у меня это не сработало. Единственное, что исправило это для меня, - это вручную добавить "C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Bin" (последняя версия SDK, содержащая rc.exe) в PATH! @Scylardor - вы использовали путь для 7.1 SDK. Установлен ли SDK 8.1 в папке C: \ Program Files (x86) \ Microsoft SDKs \ Windows? Возможно, в вашем случае можно будет использовать ту же команду с 7.1 на конце, или же вам может потребоваться установить 8.1 SDK. Я создал командный файл с помощью call C:\\(. )\vcvarsall.bat" amd64 8.1 и start cmake-gui , работает как шарм Спасибо, у вас была такая же настройка (бок о бок VS), и это намного чище, чем копирование файлов!Судя по тому, что я обнаружил, если у вас ОС Windows 7, следующие шаги помогут решить проблему:
1) перейдите в C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Bin
2) затем скопируйте RC.exe и RcDll из этого файла
3) перейдите в C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin и вставьте в него два файла, которые вы скопировали.
У меня была такая же проблема, и вышеприведенное решение не сработало. Мое решение было получено из него, и оно сработало для меня, если вышеперечисленные не работают, вы можете попробовать это.
Удивительно, но это сработало и для меня, копирование из v7.1A \ Bin в Microsoft Visual Studio 14.0 \ VC \ bin У меня это не сработало на Windows server 2012 с VS 2017, установленным вместе с VS 2015.это rc.exe ошибка может возникнуть, если версии компилятора Visual C ++ и Windows 10 SDK не соответствуют одному и тому же году Visual Studio. В общем, решение состоит в том, чтобы убедиться, что в вашей системе есть и вы используете в компиляции VC ++ и Windows SDK для того года Visual Studio, который вы используете.
Например, если у вас есть Visual Studio 2017 или 2019, и вы установили Build Tools 2015, не выбрав установку собственного пакета SDK для Windows 2015 (установка по умолчанию не устанавливает его!), И пытаетесь использовать его для компиляции, вы можете столкнуться с Эта проблема.
В моем случае у меня уже была Visual Studio 2017. Когда я пытался использовать Build Tools 2015 для компиляции библиотеки python (или, возможно, любой программы), возникла та же ошибка «rc.exe». Я читал, что компилятор VS2015 14.0 C ++ может дать сбой, если попытается использовать Windows 10 SDK из Visual Studio 2017.
Я удалил Build Tools 2015 и переустановил его, на этот раз как выборочную установку, выбрав для установки как Visual C ++, так и компоненты SDK для Windows 10. Это устранило проблему.
ОБНОВЛЕНИЕ: я только что снова посмотрел на Build Tools 2015, и, по-видимому, больше нет варианта пользовательской установки. В таком случае установка Visual Studio 2015 с компонентами C ++ и Windows SDK также должна работать.
Читайте также:
- Когда UseShellExecute истинно, свойство WorkingDirectory указывает местоположение исполняемого файла.