gpt4 book ai didi

c++ - vs10 C++ $(MyLibrary) 与 %(MyLibrary)

转载 作者:行者123 更新时间:2023-11-28 06:52:13 26 4
gpt4 key购买 nike

我们正在使用环境变量来指定我们使用的库的路径。大多数时候它指向发布版本,但有时指向开发版本。

无论如何,当我使用 $(MyLib)/path;%(AdditionalIncludeDirectories) 构建 C++ 应用程序时它工作正常,但我无法打开项目资源。但是,当我使用 %(MyLib)/path;%(AdditionalIncludeDirectories) 时,它起作用了。

现在,有什么区别?我认为正确的方法是使用 $(EnvVar) 但对于资源编辑器它似乎不起作用。如果 $(EnvVar) 是正确的方法,那么为什么 Visual Studio 使用 %(AdditionalIncludeDirectories) 而不是 $(AdditionalIncludeDirectories)

我得到的错误是:fatal error RC1015: cannot open include file 'afxres.h'.

最佳答案

您使用 %(item) 来引用 MSBuild 元数据项。如果您还具有该名称的环境变量,则使用 $(AdditionalIncludeDirectories) 将无法正常工作。所以 %(MyLib)/path 应该只解析为 /path

您可以将 echo %(MyLib)/path 放入预构建事件中以验证这一点。

这可能足以让资源编译器 rc.exe 不再混淆。这是一个非常古老的 SDK 实用程序,可以一直追溯到 Windows 1.0 版。它非常喜怒无常,对命令行选项和 .rc 脚本文件文本编码非常挑剔。请记住,它可以追溯到远早于 Windows 开始支持正斜杠作为路径分隔符的时代,早在 1986 年每个人都必须使用反斜杠。

因此请改用 "$(MyLib)\path",包括双引号,这样您就不会在 MyLib 包含嵌入空格时混淆它。并赞成使用项目属性表,这样有些人仍然可以弄清楚如何在 2 年以上后正确构建项目。

关于c++ - vs10 C++ $(MyLibrary) 与 %(MyLibrary),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23729739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com