C++ Visual Studio 2013中结束的环境变量路径错误
我正在使用Autodesk FBX文件,因此我向系统表中添加了一个环境变量,以与DirectX标准环境等效的方式指向FBX SDK安装文件夹。变量,设置如下:C++ Visual Studio 2013中结束的环境变量路径错误,c++,visual-studio,visual-studio-2013,encoding,escaping,C++,Visual Studio,Visual Studio 2013,Encoding,Escaping,我正在使用Autodesk FBX文件,因此我向系统表中添加了一个环境变量,以与DirectX标准环境等效的方式指向FBX SDK安装文件夹。变量,设置如下: FBXSDK_DIR = C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\ 它工作得很好,至少在我决定下载e之前,编译器突然抱怨包含;更好地检查,IntelliSense现在说,我的环境变量(如包含路径列表中所示)是: C:\Program Files\Autodesk\FBX\FBX SD
FBXSDK_DIR = C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\
它工作得很好,至少在我决定下载e之前,编译器突然抱怨包含;更好地检查,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目录中写入
$(FBXSDK_DIR)“
,IntelliSense会说这两个路径(由于某种原因,Include在列表中总是出现两次)现在解析为:
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""""""
看起来您将字符
\\
与符号\
混淆了。第二个是所谓的转义字符,它使编译器忽略代码中的下一个字符
因此,如果您想在字符串中使用一些特殊字符,如\
或“
,您必须编写\\
或\”
。第二种方法是让编译器关闭字符串
这就是为什么
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)放入包含项之外,我没有在VisualStudio中添加任何其他设置。