我在网上搜索过,找不到任何与我的问题相似的内容。
我创建了一个空的C ++项目并添加了一个带有返回的main.cpp,我无法构建它。这是我收到的消息:
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 ==========
在VS2012中是否有某处我可以指定在哪里找到这个可执行文件?我已经安装了Windows 7 SDK,我在以下位置有这个可执行文件:
C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin
我来自Code :: Blocks并毫不费力地使用mingw-gcc,但最近我一直需要VS进行托管实现,所以我希望有人有个想法。
答案 0 :(得分:179)
在Google上发现这一点...我认为在您的情况下,您可以将rc.exe
和rcdll.dll
复制到visual studio 2012\vc\bin
或安装在任何地方:
第2部分:修复链接:fatal error LNK1158: cannot run ‘rc.exe’
将此添加到PATH环境变量:
C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86
复制这些文件:
RC.EXE
rcdll.dll
这
C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86
要
C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ bin
或者我也发现了这个:
微软从他们的MSVT包中留下了一些东西。由于没有人知道他们是因为错误还是出于执照原因而被遗漏,因此MSVC的任何人都没有兴趣将他们拒之门外。一些谷歌搜索发现了一些棘手的来源。幸运的是,微软最终已经结束并解决了这个问题以及更多问题。
http://msdn.microsoft.com/vstudio/express/support/faq/default.aspx#pricing
http://msdn.microsoft.com/vstudio/express/support/install/
有大量MSVT丢失的文件,但丢失的SDK文件不是。
这个:
我有同样的问题,我通过这样做解决了:
现在我可以无错误地构建和链接资源文件。
答案 1 :(得分:53)
我们在计算机上安装VS2017之后,使用我们的CMake / Visual Studio 2015版本解决了这个问题。在我们的示例中,正确的解决方案是将Visual Kit命令提示符指定为Window Kit版本(8.1) - 否则您将获得默认情况下的Windows 10工具包,该工具包不包含bin目录中的rc.exe。
e.g。开始菜单 - > Visual Studio 2015-> VS2015 x64 Native Tools命令提示符
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 8.1
注意结尾的8.1选项
答案 2 :(得分:28)
根据我的发现,如果你有一个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并粘贴您复制到其中的两个文件。
我遇到了同样的问题,上面发布的解决方案无效。我的解决方案源自它,它对我有用,如果上面的那些不起作用你可以尝试这个。
答案 3 :(得分:16)
如果Visual C ++编译器和Windows 10 SDK版本与同一Visual Studio年份不对应,则会发生此rc.exe
错误。
如果您有Visual Studio 2017,并且安装了Build Tools 2015而未选择安装自己的2015 Windows SDK(默认安装不安装它!),并且正在尝试使用它进行编译,则可能会遇到此问题
在我的情况下,我已经有了Visual Studio 2017.当我尝试使用Build Tools 2015来编译python库(或者可能是任何程序)时,发生了同样的'rc.exe'错误。我读到如果尝试使用Visual Studio 2017中的Windows 10 SDK,VS2015 14.0 C ++编译器会出现故障。
我卸载了Build Tools 2015,并重新安装了它,这次是作为自定义安装,选择安装两个 visual C ++和Windows 10 SDK组件。这解决了这个问题。
答案 4 :(得分:11)
就我而言,我在VS2015和VS2017中创建的项目之间存在混合和匹配错误。在我的.vcxproj文件中,有一节名为PropertyGroup Label =“Globals”>。我有一个TargetPlatformVersion = 10.0.15063.0的部分。当我删除了TargetPlatformVersion时,解决了这个问题。
很抱歉,我无法复制并粘贴此块,但stackoverflows编码格式不允许这样做。
答案 5 :(得分:6)
我在Windows 7 x64和 Visual Studio 2017 上。我试图编译一个cython脚本时遇到此错误。 这就是我的解决方法: 我从以下位置复制并粘贴了 rc.exe 和 rcdll.dll :
C:\Program Files (x86)\Windows Kits\8.1\bin\x86
到
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64
答案 6 :(得分:4)
这是我几乎相似的案例:
我在Win7 32bit下有VC2010工作项目。我在Win8.1 64bit下干净安装VC2013
在将我的项目从VC2010成功转换为VC2013后,在第一次编译期间,以下错误上升:
完成生成代码
链接:致命错误LNK1158:无法运行'rc.exe'
解决方案1:
在记事本的NameOfYourSolution.vcxproj文件中的元素“< PropertyGroup>”中删除整行“< ExecutablePath Condition =”...“> ...< / ExecutablePath>”然后再运行VC2013
解决方案2:
仅复制两个文件:rc.exe和rcdll.dll从“c:\ Program Files(x86)\ Windows Kits \ 8.1 \ bin \ x86 \”到“c:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \“和编译将成功!!
注:
a)不需要触摸任何PATH或其他Windows或VC环境变量
b)“平台工具集”(项目属性页面 - >配置属性 - >常规)将自动设置为“Visual Studio 2013(v120)”(不将其更改为“Visual Studio 2010”以便能够继续开发您在VC2013概念下的项目)
答案 7 :(得分:4)
在我的情况下,错误是由于vcxproj中的错误设置。 vcxproj来自第三方,因此我不确定它是如何进入该状态的。
具体来说,对于其中一个平台/配置文件组合,Windows SDK bin文件夹中缺少平台文件夹:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ExecutablePath>$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin\x86;
是正确的,其中
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ExecutablePath>$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin;
不正确。可能需要滚动到代码框的末尾才能看到差异。
另请注意,对于某些奇怪的原因$(WindowsSdkDir)bin \ x64;不适合我。试图找出原因,当rc.exe肯定存在于该文件夹中时,我放弃了。在我看来,之前海报中涉及复制rc.exe的解决方案都是错误的,因为你的项目不适用于任何其他人的机器。如果您正确修复项目中的路径,它应该可以在任何正确安装Windows SDK的计算机上运行。
答案 8 :(得分:3)
这可能有点过时了。但是,如果复制rc.exe和exdll.dll不起作用,即使windows sdk文件夹存在,也可能无法正确安装Windows sdk。您可以在以下页面中更新win 8的sdk: http://msdn.microsoft.com/en-US/windows/hardware/hh852363 重新安装sdk后,问题就会得到解决。还要确保正确设置平台工具集。
答案 9 :(得分:3)
我使用的是Windows 10 x64和Visual Studio 2017.我从以下位置复制并粘贴了rc.exe和rcdll.dll:
C:\Program Files (x86)\Windows Kits\8.1\bin\x86
到
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64
它适用于:(qt creator 5.7.1)
答案 10 :(得分:2)
就我而言,是Windows 10 x64上的VS 2019,
我主要按照答案中的说法,但是将dev
和package.json
从HOST=0.0.0.0
粘贴到 "scripts": {
"build": "rollup -c",
"dev": "HOST=0.0.0.0 rollup -c -w",
"start": "sirv public"
},
所在的npm run dev
。
答案 11 :(得分:2)
我刚刚在我的VS2010(SDK7.1)解决方案中找到了一个(总共3个)项目(项目在顺序线性依赖链中链接),在项目文件中有一个空的.rc文件。 删除空的.rc文件(从项目中删除而不删除它)解决了“致命错误LNK1158:... cvtres.exe”问题。
更新:以下副本解决了问题:
httpd
这将使WinSDK7.1能够通过MSBuild将.rc文件编译成可执行文件。
答案 12 :(得分:2)
我使用Windows 7与VS 2013(更新3)和英特尔Parallel Studio XE编译器版本用于Fortran Windows(更新5)。开箱即用我有同样的问题。
一旦我修复了丢失的rc.exe问题,我就遇到了另一个问题。链接器缺少kernel32.lib。
我通过更新英特尔编写器选项(TOOLS-&gt;选项...-&gt;英特尔Composer XE-&gt; Visual Fortran-&gt;编译器)纠正了这两个问题。
对于Win32选项卡,我添加了:
可执行文件: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86; (就在$(PATH)之前)
库: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Lib \ win8 \ um \ x86; (最后)
对于x64标签,我添加了:
可执行文件: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x64; (就在$(PATH)之前)
库: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Lib \ win8 \ um \ x64; (最后)
...更新
我还缺少一些SDK头文件(winver.h和winapifamily.h)。我将以下内容添加到相同的TOOLS-&gt; Options ...区域。
对于win32和x64选项卡
包含: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ um; C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ shared;
答案 13 :(得分:2)
我在VS 2013上遇到了同样的问题,并且能够通过更改Platform Toolset
来修复它。
您可以在项目设置中找到它。一般。
E.g。将Platform Toolset
切换到VS 2010将导致VS使用Windows \ v7.0A SDK。
您可以通过将此添加到预建事件来检查使用的SDK路径:
echo using SDK $(WindowsSdkDir)
答案 14 :(得分:2)
我最近遇到了这个问题。我同时安装了VS 2015和VS 2017,安装了Windows套件8.1和10。
VS 2017中的命令提示符按预期工作,可见rc.exe。在VS 2015中,情况并非如此。 实际上,VS 2015中的vcvarsall.bat脚本确实将Windows 10工具包的路径添加到PATH变量,但是它添加了一条稍微错误的路径。它将路径添加到
"C:\Program Files (x86)\Windows Kits\10\bin\x86"
实际路径为
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86"
似乎更新Windows 10工具包(或安装VS 2017)导致了此问题。
因此解决方案很简单:只需在“ C:\ Program Files(x86)\ Windows Kits \ 10 \ bin”文件夹中创建指向基础文件夹中相应文件夹的符号链接,例如文件夹“ 10.0.17763.0 \ x86”的符号链接“ x86”,“ 10.0.17763.0 \ x64”的符号链接“ x64”等。
答案 15 :(得分:1)
这比Visual Studio 2017更容易。请按照以下说明操作:https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio以使用Microsoft Visual Studio Installer进行修改。
进入Microsoft Visual Studio安装程序后,单击已安装的Visual Studio软件包下的“修改”,确保选中“使用C ++进行桌面开发”,并在摘要下检查MFC和ATl支持(x86和x64)。
答案 16 :(得分:1)
我也可以在Windows中以这种方式使它工作
C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x86
您可以使用
轻松设置环境变量C:> setx路径“%path%; C:\ Program Files(x86)\ Windows 套件\ 10 \ bin \ 10.0.18362.0 \ x86“
答案 17 :(得分:1)
如果确实需要将SDK Windows 10与Visual Studio 2015一起使用,则必须在sdk-archive上下载旧版本。较新版本的SDK更改了rc可执行文件的位置,并且Visual Studio 2015 Update 3(最新版本)的MSBuild无法找到它。 至少SDK Windows版本10.0.14393.795仍与Visual Studio 2015兼容。
答案 18 :(得分:1)
添加到环境变量窗口sdk 8.1路径
C:\ Program Files(x86)\ Windows Kits \ 8.1 \ bin \ x64
然后打开Visual Studio x64本机工具命令提示符并输入
vcvarsall.bat
答案 19 :(得分:1)
这可能是由以前版本的Visual Studio中的vcxproj引起的,或者是在配置属性中更改平台工具集 - &gt;一般
如果是,可能的解决方案:
1)转到配置属性 - &gt; VC ++目录
2)选择可执行目录的下拉列表
3)选择&#34;继承父项目或项目默认值&#34;
答案 20 :(得分:0)
对于我来说,我是通过Visual Studio 2015-> 修改安装了Windows SDK 10586,然后安装了以下路径。
C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ arm64 \ rc.exe
C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ x64 \ rc.exe
C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ x86 \ rc.exe
答案 21 :(得分:0)
也许项目文件被VS2017感动了。然后,当您在2015年链接该项目时,“ LINK:致命错误LNK1158:无法运行'rc.exe'”会使构建停止。
在vcxproj中尝试:
1)替换:
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
与:
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
2)删除:
<VCProjectVersion>15.0</VCProjectVersion>
3)替换:
<PlatformToolset>v141</PlatformToolset>
与:
<PlatformToolset>v140</PlatformToolset>
答案 22 :(得分:0)
对于Visual Studio社区2019,将上面答案(C:Users/arpchauh/PycharmProjects/post_blog/blogs>python manage.py runserver
python: can't open file 'manage.py': [Errno 2] No such file or directory
)中的文件复制到rc.exe
rcdll.dll
对我来说很成功。
答案 23 :(得分:0)
尝试在Azure DevOps管道中的bash
任务中执行rc.exe
时,我遇到了关于pip install
的OP链接错误,我正在使用该Azure DevOps管道通过C ++从源代码构建Python包扩展名。我可以通过在调用rc.exe
之前在bash
任务中将路径添加到pip install
来解决此问题,就像这样:
PATH="/c/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64":$PATH
位于Azure job
中,该Azure vmImage: 'windows-2019'
为其代理使用;即带有Visual Studio 2019的Windows Server 2019。
答案 24 :(得分:0)
我在Windows 10 Pro x64,VS 19上。
尝试在cmd中为Apache安装mod_wsgi时。
10
这是我从命令提示符中得到的错误。
72
我必须从那里复制rc.exe和rcdll.dll
C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x86
并将其添加到
C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ bin \ x86_amd64
cmd的结果
C:\>python -m pip install mod_wsgi
希望这对某人有帮助。
答案 25 :(得分:0)
“错误LNK1158无法运行'rc.exe”可能是由于您的项目是由较新的MS VS版本打开的。例如,您的项目是在VS 2015中创建的,然后在2017年之前打开。然后在2015年打开您的项目。
要解决此问题,请打开yourProjectName.vcxproj,查找 WindowsTargetPlatformVersion ,然后更改为正确的VS版本
对于VS 2015,应为8.1 对于VS 2017,应为10.0.17763.0
答案 26 :(得分:0)
我对这个问题的回答。
修改文件C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vcvarsqueryregistry.bat
:GetWin10SdkDir
的内容
来自
@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
修改此单个位置将启用对所有Windows 10 SDK以及所有Windows 10的支持 建立Visual Studio的目标,包括
他们都在工作。