错误C2061:语法错误:标识符' IXMLDOMDocument'

时间:2014-05-12 21:36:42

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

我正在(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&gt; C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Include \ shobjidl.h(17624):错误C2061:语法错误:标识符&#39; IXMLDOMDocument&#39;

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

我之前已经定义了msxml和ISoftDistExt来解决歧义问题,所以我不得不像以下那样#undef:

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

此外,您可以使用#import语句,如follownig

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

希望这会有所帮助。