首页 > 解决方案 > VS 2017 - 带有版本信息(资源)的 C++ DLL 的 MSBuild 不起作用(致命错误 LNK1158:无法运行“cvtres.exe”)

问题描述

我对最新的 Visual Studio 2017 有以下问题(从 2018 年 3 月 15/20 日开始):

1) 为 C++ DLL(和相关解决方案)创建一个 Visual Studio 项目,例如 dll1Prova

2)添加带有版本信息的资源文件(扩展名为“.rc”的文件)

3) 保存所有文件并编译。编译很好,一切似乎都可以正常工作

4)然后使用 MSBuild,我尝试使用以下命令(来自命令提示符)构建解决方案:

设置 VisualStudioVersion=15.0 设置 VCTargetsPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" dll1Prova.sln /nologo /p:PlatformToolset=v141​​;Configuration=Debug /v:detailed

我在日志末尾收到以下错误:

"C:\Users\LazzaAnd\source\repos\Dll1Prova\dll1Prova.sln" (默认目标) (1) -> "C:\Users\LazzaAnd\source\repos\Dll1Prova\Dll1Prova\Dll1Prova.vcxproj" (默认目标) (2) -> (链接目标) -> LINK : 致命错误 LNK1158: 无法运行 'cvtres.exe' [C:\Users\LazzaAnd\source\repos\Dll1Prova\Dll1Prova\Dll1Prova.vcx proj]

该问题似乎与安全问题有关,因为当我以机器管理员身份运行 MSBUild 时,一切正常(使用“以管理员身份运行”启动命令提示符)。

我在微软社交论坛上提出了一个问题:

https://social.msdn.microsoft.com/Forums/it-IT/8829757b-0320-4765-8853-2a78b7b24485/vs-2017-msbuild-of-c-dll-with-version-information-resource-is-非功能性致命错误?forum=msbuild

但是,当我找到解决方法(以管理员身份运行)时,似乎没有进一步的建议/调查。有没有人有同样的问题和/或一些解决方案?

标签: c++visual-studiomsbuildvisual-studio-2017

解决方案


VS 2017 - 带有版本信息(资源)的 C++ DLL 的 MSBuild 不起作用(致命错误 LNK1158:无法运行“cvtres.exe”)

我也无法重现此问题。由于以管理员身份启动“VS2017 的开发人员命令提示符”为您工作,此时,您可以自动以管理员身份运行 VS2017 的开发人员命令提示符作为解决方法。

为此,打开 Windows 资源管理器,导航到以下目录以找到 VS2017 快捷方式的开发人员命令提示符,右键单击 VS2017 快捷方式的开发人员命令提示符,单击属性。切换到快捷方式选项卡,点击高级,勾选以管理员身份运行,最后点击确定,然后应用:

在此处输入图像描述

在此处输入图像描述


推荐阅读