代码之家  ›  专栏  ›  技术社区  ›  bobbyalex

错误C2011:“MSXML2::IXMLDOMImplementation”:“struct”类型重新定义

  •  5
  • bobbyalex  · 技术社区  · 17 年前

    我正在改变我的C++项目,它在VC6中较早,现在被迁移到VS 2008,使用MSXML 6而不是早期的MSXML 3。 当代码在VC6中时,我们通过导入来使用MSXML3

    # import "msxml3.dll"
    

    它被替换为

    # import "msxml6.dll"
    

    在这之后,当我编译项目时,我得到了这个和其他几个类似的错误

    上面的错误在msxml3.tlh文件中。

    1) 为什么msxml3仍在使用?

    2) 我把问题缩小到MSXML.h,它不知怎么地自动包含在我的项目中。为什么会这样?

    3) MSXML.h中引用了哪个版本的MSXML?

    4) 为什么VC++会自动包含这么多头文件?如果我不想包含一些头文件呢?

    5) 在c++项目中使用MSXML6的正确方法是什么?#导入,头文件?????

    6) 我如何解决这个问题?

    随时给我.net。干净多了。VC++项目一团糟。

    3 回复  |  直到 17 年前
        1
  •  2
  •   Aleksander Stankiewicz    17 年前

    检查#import指令的语法。您可以使用import指令(或rename_namespace)上的rename属性重命名导入的元素。它将解决与重复元素的冲突。

    请看这里: in MSDN

    有时会更改包含顺序(是-通过注释掉include和import语句的不同顺序)

        2
  •  1
  •   Michael Myers KitsuneYMG    14 年前

    看看 the MS docoumentation on MSXML .

    他们建议导入现有的.dll将创建两个.thl和.tli文件。确保你已经删除了这些。

    确保所有include目录指向正确的位置。

    确保您没有将msxml3导入到项目的其他地方。

    若要查找msxml.h,请执行CTRL+SHIFT+F并在整个解决方案中搜索“msxml”<-请注意缺少.h,因为如果您正确导入了它,则应该按如下方式执行:

    #include <msxml6.dll>
    

    试试那个。。。

        3
  •  0
  •   Michael Dunn    17 年前

    我会尝试重命名msxml.h并进行构建。这将显示包含msxml.h的文件。