我是Visual C ++的新手。
我正在尝试使用库A,而库A又使用另一个库B.当我尝试包含A的标题时,我得到“错误C2061:语法错误:标识符'GUID'”。在库B的头中触发此错误。当我检查抛出错误的行时,问题是库B中的头使用Guiddef.h中的定义,这是一个微软头。
问题是我似乎无法添加此标头或创建添加它的项目。
我正在使用Visual Studio 2010 Premium。
我做错了什么想法?
答案 0 :(得分:2)
不知道你的意思是将它添加到项目中或创建一个添加它的项目,但是当你的系统上有guiddef.h并且你的MSVC环境的目录(在常见属性中)被正确设置时,你就是必须在包含lib-headerfiles之前将#include <guiddef.h>
添加到cpp或h文件中,一切都会(应该)没问题。
答案 1 :(得分:1)
guiddef.h
是Windows SDK的一部分。如果您有VS 2010 Express,则不包含SDK,您需要单独下载。
如果您使用的是“SK”之上的“SK”,则应该已经安装了SDK(我不确定您是否可以在停止时取消选择)。默认情况下,它将进入:
C:\Program Files\Microsoft SDKs\Windows\v7.0A\
VS安装的“Visual Studio命令提示符”快捷方式应该适当地设置INCLUDE
环境变量。默认的C ++项目也应该适当地设置包含路径,但是可以在项目的“VC ++目录”属性中进行更改(您应该检查它)。如果您的每个项目设置错误,请在那里进行更改。
但是,如果每个(或至少大多数)C ++项目继承的“IDE范围”VC ++目录属性搞砸了,请按照此博客文章中的说明修复VS 2010中的全局VC ++目录设置:
具体做法是:
如果打开Property Manager视图以查看与项目关联的属性表,您将看到其中一个属性表名为
Microsoft.Cpp.Win32.User
。此属性表实际存储在目录LocalAppData
中VCComponents.dat
,就像%LocalAppData%\Microsoft\VisualStudio\10.0
文件一样。使用属性表上的属性编辑器(只需右键单击此属性表节点并选择属性...),您可以看到您可以直接对此文件进行编辑。由于默认情况下所有项目都导入了此属性表,因此您可以像以前一样有效地编辑VC ++目录。
答案 2 :(得分:1)
您可能(但不一定是真的)需要将库包含为链接器依赖项。我在这里假设您已经在使用#include(并且具有正确的大小写'g')
我的建议:
您可能不需要在两个项目中都使用相同的依赖项,但如果您确实需要链接borked项目中的库,您应该能够缩小所需的项目并将其包含在依赖项列表中。
希望有所帮助,或者至少不会让你偏离太远的路线!
修改强>
实际上,对于Windows API中的某些标题,您可能无法单独包含它们(我不确定guiddef.h是否是其中之一),但它们应作为子包含在内 - windows.h的头。