You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Visual Studio 2019中无需硬编码路径引用link.exe?

不用再头疼VS更新导致MSVC版本路径变化的问题了,这里有几个不用硬编码就能自动找到link.exe的实用方法:

方法一:使用VS内置的工具链路径变量

Visual Studio的构建系统已经为不同架构的工具链预设了环境变量,直接用这些变量就能定位到对应版本的link.exe:

针对你当前的Hostx86/x86架构,直接用$(VC_ExecutablePath_x86_x86)变量替换硬编码路径即可,修改后的命令行如下:

"$(VC_ExecutablePath_x86_x86)\link.exe" /MACHINE:x86 /VERBOSE /NOENTRY /DLL /OUT:"$(ProjectDir)$(OutDir)$(TargetName).ribbon.dll" "$(ProjectDir)RibbonMarkup.res"

这个变量会自动匹配当前VS安装的MSVC版本路径,不管后续VS怎么更新,路径都会同步调整,完全不用手动修改。

如果需要其他架构的工具链,对应的变量也有:

  • x64主机+ x64目标:$(VC_ExecutablePath_x64_x64)
  • x86主机+ x64目标:$(VC_ExecutablePath_x86_x64)

VS提供了vcvarsall.bat脚本,用来初始化对应工具链的环境变量,执行这个脚本后,link.exe会被自动加入系统PATH,直接调用即可:

修改后的预生成事件命令如下:

call "$(VSInstallDir)\VC\Auxiliary\Build\vcvarsall.bat" x86
link.exe /MACHINE:x86 /VERBOSE /NOENTRY /DLL /OUT:"$(ProjectDir)$(OutDir)$(TargetName).ribbon.dll" "$(ProjectDir)RibbonMarkup.res"
  • $(VSInstallDir)是VS的安装目录变量,会自动指向你的VS2019 Community版安装路径
  • 脚本后的x86参数指定了要初始化的工具链架构,根据你的需求修改即可(比如x64

这种方法的优势是通用性极强,不管是哪个版本的MSVC,只要VS安装正常,脚本就能正确配置环境。

方法三:直接使用MSBuild的LinkExe属性

如果你的项目是基于MSBuild构建的,还可以直接使用$(LinkExe)属性,这个属性已经包含了link.exe的完整路径,命令会更简洁:

"$(LinkExe)" /MACHINE:x86 /VERBOSE /NOENTRY /DLL /OUT:"$(ProjectDir)$(OutDir)$(TargetName).ribbon.dll" "$(ProjectDir)RibbonMarkup.res"

不过需要注意,这个属性的可用性可能和项目类型有关,如果你不确定,可以先在预生成事件里加一句echo $(LinkExe)测试输出路径是否正确。

小提示

在修改预生成事件后,可以先执行一次生成,查看输出窗口的日志,确认link.exe的路径是否正确加载,避免出现意外错误。

内容的提问来源于stack exchange,提问作者fsbflavio

火山引擎 最新活动