【问题标题】:error C2061: syntax error : identifier 'IXMLDOMDocument'错误 C2061:语法错误:标识符“IXMLDOMDocument”
【发布时间】:2014-05-13 22:17:04
【问题描述】:

我正在 (VS2013) 上构建 GTK+ VS2010 项目配置,并且正在尝试添加浏览文件夹功能(我想使用 Native Windows 方式)。我正在使用以下代码:

#include <windows.h>
#include <ShlObj.h>
DWORD WINAPI BrowseFolder(void *ptr)
{
    char path[MAX_PATH];

    cchar * path_param = (cchar*)ptr;
    BROWSEINFO bi = { 0 };
    bi.lpszTitle = ("Select Folder");
    bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
    bi.lpfn = BrowseCallbackProc;//callback function defined..
    bi.lParam = (LPARAM)path_param;

    LPITEMIDLIST pidl = SHBrowseForFolder(&bi);

    if (pidl != 0)
    {
        //get the name of the folder and put it in path
        SHGetPathFromIDList(pidl, path);

        //free memory used
        IMalloc * imalloc = 0;
        if (SUCCEEDED(SHGetMalloc(&imalloc)))
        {
            imalloc->Free(pidl);
            imalloc->Release();
        }

        strcpy(g_sDefaultDir, path);
        return 0;
    }
}

但在编译时我收到此错误消息

1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\shobjidl.h(17624):错误 C2061:语法错误:标识符“IXMLDOMDocument”

这是我的配置: 我在 VS2013 上运行 VS2010 解决方案 使用标准 Windows 库 不使用 ATL 并使用多字节字符集

有什么想法吗?

【问题讨论】:

  • 我也尝试过使用不同的 SDK,v7.0A 和 Windows Kits 8.0 和 8.1

标签: c++ visual-studio-2013 gtk


【解决方案1】:

我找到了两种方法来解决我的问题。

我之前定义了 msxml 和 ISoftDistExt 来解决歧义问题,所以我必须像下面这样#undef 它们:

#undef __msxml_h__
#undef __ISoftDistExt_INTERFACE_DEFINED__
#include <MsXml.h>
#include <ShlObj.h>

此外,您可以使用如下所示的#import 语句

#undef __msxml_h__
#undef __ISoftDistExt_INTERFACE_DEFINED__
#import <msxml6.dll> 
using namespace MSXML2;
#include <ShlObj.h>

希望这对以后的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多