错误 C2011:“MSXML2::IXMLDOMImplementation” : ‘结构’ 类型重定义

发布于 2024-07-24 15:04:42 字数 666 浏览 5 评论 0原文

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

# import "msxml3.dll"

这被替换为

# import "msxml6.dll"

After this 当我编译项目时,我得到这个和其他几个类似的错误 错误 C2011:“MSXML2::IXMLDOMImplementation”:“struct”类型重新定义

上述错误位于 msxml3.tlh 文件中。

1)为什么仍然使用msxml3?

2)我将问题范围缩小到 MSXML.h,它以某种方式自动包含在我的项目中。 为什么是这样?

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

4) VC++到底为什么自动包含这么多头文件? 如果我不想包含某些头文件怎么办?

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

6) 如何解决此问题?

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

I am changing my C++ project, which was earlier in VC6 and now being migrated to VS 2008, to use MSXML 6 instead of the earlier MSXML 3.
When the code was in VC6 we were using MSXML3 by importing it

# import "msxml3.dll"

This was replaced with

# import "msxml6.dll"

After this when I compile the project I get this and several other similar errors
Error C2011: 'MSXML2::IXMLDOMImplementation' : 'struct' type redefinition

The above error is in the msxml3.tlh file.

1) Why is msxml3 still being used?

2) I narrowed down the problem to MSXML.h which is somehow automatically being included in my project. Why is this?

3) Which version of MSXML is being referenced in MSXML.h?

4) Why in the world does VC++ automatically include so many header files? What if I dont want some header files to be included?

5) What is the right way of using MSXML6 in a c++ project? #import, header file?????

6) How do I fix this problem?

Give me .net any time. Much cleaner. A VC++ project is a mess.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哭了丶谁疼 2024-07-31 15:04:42

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

请参阅此处:MSDN

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

不要与 MS 错误作斗争,只需交叉它们即可;)

Check the syntax of the #import directive. You can rename imported elements using rename attribute on import directive (or rename_namespace). It will resolve conflicts with duplicated elements.

See here: in MSDN

Sometimes change of the inclusion order (yes - try different order of the include and import statements by commenting them out)

Don't fight with the MS mistakes, just cross them ;)

谎言 2024-07-31 15:04:42

查看有关 MSXML 的 MS 文档

他们建议导入 .dll,因为您已经创建了几个 .thl 和 .tli 文件。 确保您已删除这些内容。

确保所有包含目录都指向正确的位置。

绝对确保您没有在项目中的其他位置导入 msxml3。

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

#include <msxml6.dll>

尝试其中一些...

Have a look at the MS docoumentation on MSXML.

They suggest that importing the .dll as you have will create a couple of .thl and .tli files. Make sure you've deleted those.

Make sure any include directories point to the right place.

Make absolutely certain that you're not importing msxml3 somewhere else in your project.

To find the msxml.h do CTRL + SHIFT + F and search you entire solution for 'msxml' <- note the lack of the .h because if you'd been importing it properly, it ought to be done as follows:

#include <msxml6.dll>

Try some of that...

記柔刀 2024-07-31 15:04:42

我会尝试重命名 msxml.h 并进行构建。 这应该会显示哪个文件包含 msxml.h。

I'd try renaming msxml.h and doing a build. That should show you what file is including msxml.h.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文