以 Visual Studio 2013 结尾的错误环境变量路径

Posted

技术标签:

【中文标题】以 Visual Studio 2013 结尾的错误环境变量路径【英文标题】:Wrong environmental variable path ending in Visual Studio 2013 【发布时间】:2016-04-03 10:21:18 【问题描述】:

我正在处理 Autodesk FBX 文件,因此我以与 DirectX 标准环境等效的方式将环境变量添加到指向 FBX SDK 安装文件夹的系统表中。变量,设置如下:

FBXSDK_DIR = C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\

而且它工作得很好,至少在我决定下载VS2013 solution written in Japanese 之前,编译器突然抱怨包含;检查得更好,IntelliSense 现在说我的环境变量出现在包含的路径列表中,是这样的:

C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2"

这导致包含是:

C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2"include

...而不是:

C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\include

...因此抛出一个合法的错误。

现在显然,我首先想到的是它与编码和转义字符有关,但是我不知道是否可以更改设置来解决它或更复杂的问题。我有没有可能解决这个问题?无需从头开始重新制定解决方案。


编辑:这里有一些有趣的东西;如果我在 Include Directories 中写 $(FBXSDK_DIR)"",IntelliSense 会说两条路径(由于某种原因,包含总是在列表中出现两次)现在解析为:

C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\include"\"\"
C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\include""""

如果我写$(FBXSDK_DIR)"""",它将是:

C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\include"\"\"\"\"
C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\include""""""

【问题讨论】:

【参考方案1】:

您似乎将字符 \\ 与符号 \ 混淆了。第二个是所谓的转义字符,它使编译器忽略代码中的下一个字符。

因此,如果您想在字符串中使用一些特殊字符,例如\",您必须编写\\\"。第二个会让编译器关闭字符串。

这就是为什么

C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\include"\"\"\"\"

转化为

C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\include""""""

编译器(或预处理器?)认为您在第一个 " 处打开了一个字符串,并转义了后面的(无效)字符。


如果您发布制动代码,将更容易看到错误。

【讨论】:

不想听起来像个混蛋,但请重新阅读我的帖子:我知道“\”是转义字符,我发布的错误不在代码中,而是在方式Visual Studio 决定解决我在系统设置中设置的环境变量。 :) 你是如何设置环境变量的?这:`$(FBXSDK_DIR) = C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2` 看起来像一个损坏的指针。 右键单击计算机 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建...它没有损坏,它在所有其他解决方案上都能完美运行。它在什么方面看起来坏了? 如果你在我上面的评论中使用表达式(在脚本或类似的东西中)你会用你的覆盖FBXSDK_DIR 中值的副本。也许您在不应该出现的地方有"?您可以尝试使用文本编辑器手动检查您的解决方案文件。有时 Visual Studio 会弄乱它。 哦,你误会了。 "$(FBXSDK_DIR) = C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\" 不是实际的实现代码,我只是写它来解释如何调用变量以及它(通常)解析的内容到;变量名实际上只是FBXSDK_DIR。除了将 $(FBXSDK_DIR) 放入包含项之外,我没有在 Visual Studio 中添加任何其他设置。

以上是关于以 Visual Studio 2013 结尾的错误环境变量路径的主要内容,如果未能解决你的问题,请参考以下文章