gpt4 book ai didi

c++ - ksmedia.h 中的编译错误(在直接 X sdk 中)

转载 作者:行者123 更新时间:2023-11-28 08:17:53 25 4
gpt4 key购买 nike

我得到了一个 C++ 项目,我必须在另一台计算机上编译和工作。它使用 Direct X SDK。我没有修改项目的任何内容。但是,当我尝试在 Visual Studio 2008 中编译该项目时,我在 ksmedia.h 中遇到了一些编译错误。我进行了搜索,但找不到与我遇到的错误相同的任何其他人以及有效的解决方案。它们如下:

1>path\Include\ksmedia.h(453) : error C2332: 'struct' : missing tag name
1>path\Include\ksmedia.h(453) : error C2011: '<unnamed-tag>' : 'enum' type redefinition
1> path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>path\Include\ksmedia.h(453) : error C2143: syntax error : missing ';' before '__uuidof'
1>path\Include\ksmedia.h(453) : error C2059: syntax error : '__uuidof'
1>path\Include\ksmedia.h(547) : error C2332: 'struct' : missing tag name
1>path\Include\ksmedia.h(547) : error C2011: '<unnamed-tag>' : 'enum' type redefinition
1> path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>\Include\ksmedia.h(547) : error C3121: cannot change GUID for class '<unnamed-tag>'
1> path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>path\Include\ksmedia.h(547) : error C2143: syntax error : missing ';' before '__uuidof'
1>path\Include\ksmedia.h(547) : error C2059: syntax error : '__uuidof'
1>path\Include\ksmedia.h(553) : error C2332: 'struct' : missing tag name
1>path\Include\ksmedia.h(553) : error C2011: '<unnamed-tag>' : 'enum' type redefinition
1> path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>path\Include\ksmedia.h(553) : error C3121: cannot change GUID for class '<unnamed-tag>'
1> path\BaseClasses\wxdebug.h(58) : see declaration of '<unnamed-tag>'
1>path\Include\ksmedia.h(553) : error C2143: syntax error : missing ';' before '__uuidof'
1>path\Include\ksmedia.h(553) : error C2059: syntax error : '__uuidof'

如果您知道导致这些错误的原因或我可以采取哪些措施来解决这些错误,我们将不胜感激。

编辑:我使用的是旧版本的 ksmedia.h 文件。我已将拷贝更改为 ksmedia.h并更新了错误消息以反射(reflect)更改。此外,Windows 和 DirectX SDK 版本相同。但是,它编译的计算机是 32 位的,而不会编译的计算机是 64 位的。

最佳答案

由于该项目在一台计算机上编译而不是在另一台计算机上编译,您显然正在寻找两者之间的一些差异。

一种可能是两个系统安装了不同版本的 DirectX SDK。也许可能性不大,但如果只是为了将其排除在考虑范围之外,还是值得检查的。

另一种可能是两个系统安装了不同版本的其他SDK。

第三种可能性是,Visual Studio 的两个拷贝被配置为以不同的顺序搜索各种 SDK 的包含文件夹。当某些类型或宏的定义来自一个系统上的一个头文件和另一个系统上的完全不同的头文件时,这可能会导致问题。

转到工具 |选项 |项目与解决方案 |编译成功的系统上的 VC++ 目录。将“显示目录”设置为“包含文件”,然后记下显示的文件夹列表,包括该列表的顺序。

现在在编译失败的第二个系统上执行相同的操作并比较两个列表。这两个列表可能不相同。一个系统可能安装了另一个系统没有安装的 SDK;这两个系统可能在不同的地方安装了相同的 SDK。尽管如此,列表的意图 应该是相同的。

如果良好系统列表中的 DirectX SDK 条目出现在 Windows SDK 条目之前,那么不良系统列表中的两个条目也应该以相同的顺序出现。您必须对出现在一个列表中但未出现在另一个列表中的条目做出最佳判断 - 或者仔细试验(但请记住更改该列表可能会影响该 Visual Studio 拷贝执行的任何构建)。

关于c++ - ksmedia.h 中的编译错误(在直接 X sdk 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7002221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com