未定义的CLSID_属性更改数组 编译C++项目时,我收到了与代码< CLSID.ProjtCuxEurray定义有关的错误,即我已经导入了所需的头文件Propsys.h,但问题仍然存在。我继续收到如下消息: propsys.obj : error LNK2001: unresolved external symbol CLSID_PropertyChangeArray propsys.cpp(610): error C2065: 'CLSID_PropertyChangeArray': undeclared identifier

未定义的CLSID_属性更改数组 编译C++项目时,我收到了与代码< CLSID.ProjtCuxEurray定义有关的错误,即我已经导入了所需的头文件Propsys.h,但问题仍然存在。我继续收到如下消息: propsys.obj : error LNK2001: unresolved external symbol CLSID_PropertyChangeArray propsys.cpp(610): error C2065: 'CLSID_PropertyChangeArray': undeclared identifier,c++,winapi,C++,Winapi,我做错了吗?我不太熟悉Win32 C++,所以这是新手错误吗?< /P> < P>这确实是文档中的bug。code>CLSID_PropertyChangeArray或PropertyChangeArray未在任何SDK或WDK标头中定义。只有一种方法可以获得接口调用 如果快速查找-此处存在symbolCLSID_PropertyChangeArray({8b6a3ebb-cd13-4704-93c5-bc3413104e4c}),但此函数不使用它调用CoCreateInstance,而是使用

我做错了吗?我不太熟悉Win32 C++,所以这是新手错误吗?< /P> < P>这确实是文档中的bug。code>CLSID_PropertyChangeArray或
PropertyChangeArray
未在任何SDK或WDK标头中定义。只有一种方法可以获得接口调用


如果快速查找-此处存在symbol
CLSID_PropertyChangeArray
{8b6a3ebb-cd13-4704-93c5-bc3413104e4c}
),但此函数不使用它调用
CoCreateInstance
,而是使用内部实现。而且这个类甚至还没有注册-因此尝试调用
CoCreateInstance
{8b6a3ebb-cd13-4704-93c5-bc3413104e4c}
返回
REGDB_E_CLASSNOTREG
错误


未定义符号和未解析符号之间有很大区别。第一个是编译器错误,第二个是链接器错误。你正在经历第二次。
CLSID
是包含多个整数的
struct
.h
文件为
CLSID\u PropertyChangeArray
变量(即
extern const CLSID CLSID\u PropertyChangeArray;
)声明了一个
extern
语句,但您需要向项目中添加一个
.lib
文件来定义实际的
CLSID\u PropertyChangeArray
变量,或者直接在代码中定义它(即
const-CLSID-CLSID_-PropertyChangeArray={…};
),以便链接器可以找到它。@xaav-如果您有未定义的符号-最好的解决方案是在
SDK
(或
WDK
VC
)包含目录的文件管理器中搜索。如果此符号正确且已定义-您在其放置位置找到了
.h
,并且需要包含此
.h
文件。如果您有未解析的符号-也要搜索,但这次是在库文件夹中。这表示您从何处导出此符号(如果必须导出),以及
.lib
需要包含哪些作为链接器输入。简单的规则,但非常有用