关于CLSID_FileOpenDialog与IID_IFileOpenDialog定义位置的咨询
解决CLSID_FileOpenDialog和IID_IFileOpenDialog找不到的问题
- 必须包含核心头文件:
Shobjidl.h,Windows文件对话框相关的COM接口、类GUID定义都在这个头文件里。 - 链接对应依赖库:编译时要链接
Shell32.lib,不然哪怕头文件正确,链接阶段也会出现未定义符号错误。在Visual Studio里可以通过项目属性→链接器→输入→附加依赖项添加,或者直接在代码里写#pragma comment(lib, "shell32.lib")。 - 确认系统版本宏定义:
IFileOpenDialog是Windows Vista及以后版本引入的,所以要在项目里定义_WIN32_WINNT为0x0600或更高。可以在项目预处理器定义中添加,或者在包含头文件前写:#define _WIN32_WINNT 0x0600 #include <Shobjidl.h> - GUID定义补充:如果包含头文件后还是找不到GUID,要么在包含
Shobjidl.h前定义INITGUID,要么链接Uuid.lib库——这是处理COM GUID的标准库。
内容的提问来源于stack exchange,提问作者Mymoon
相关产品推荐
相关产品推荐

