使用Shobjidl.h Microsoft SDK中出现奇怪的错误

Strange errors in Microsoft SDK using Shobjidl.h

本文关键字:错误 Shobjidl Microsoft SDK 使用      更新时间:2023-10-16

我想在cpp中检索当前用户文档文件夹的文件夹,所以我使用SHGetFolderPath并包含Shobjidl.h

结果,我的代码无法编译,并生成以下输出:

1>C:Program FilesMicrosoft SDKsWindowsv7.0Aincludeshobjidl.h(8994): error C2143: syntax error : missing ')' before 'constant'
1>C:Program FilesMicrosoft SDKsWindowsv7.0Aincludeshobjidl.h(8994): error C2143: syntax error : missing ';' before 'constant'
1>C:Program FilesMicrosoft SDKsWindowsv7.0Aincludeshobjidl.h(8994): error C2059: syntax error : ')'
1>C:Program FilesMicrosoft SDKsWindowsv7.0Aincludeshobjidl.h(8994): error C2238: unexpected token(s) preceding ';'

这些错误背后的代码是:

        virtual HRESULT STDMETHODCALLTYPE GetInt32( 
            /* [in] */ __RPC__in REFPROPERTYKEY key,
            /* [out] */ __RPC__out int *pi) = 0; // <- this line produces compile error

怎么了?提前谢谢。

我正在使用Win 7,VS2010 Express。

您需要为该函数包含的头文件是 Shlobj.h ,根据文档,而不是Shobjidl.h 。 我猜Shobjidl.h很可能是一个内部头文件,并不意味着直接包含 - 它可能取决于之前已经包含的其他头文件,这将修复您看到的错误。