微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的项目设置在“发布”模式下发生冲突?

如何解决为什么我的项目设置在“发布”模式下发生冲突?

我正在尝试为我的项目使用DirectXTex库。我从GitHub克隆了它,并使用Visual Studio 2019解决方案桌面版对其进行了构建,其代码生成设置与我自己的项目中的完全相同。它适用于调试配置,但是当我在发行版上构建时,会出现类似以下错误消息:

_IteraTOR_DEBUG_LEVEL: Value 2 of (some DirectXTex .obj) is conflicting with value 0 of (my own .obj)

与此消息一起显示

Runtime library: MTd_StaticDebug of (some DirectXTex .obj) is conflicting with MT_StaticRelease of (my own .obj)

这很奇怪,因为我将两个项目的运行时库都设置为用于发布的多线程(/ MT)和用于调试的多线程调试(/ MTd)。我进行了一些研究,发现this文章涵盖了这个确切的问题,但是这些解决方案都不适合我。我尝试了以下方法

  • 查看出于某种原因(不是),在DirectXTex的发布模式版本中是否定义了_DEBUG预处理器
  • 尝试将两个项目设置都设置为Multithreaded-DLL
  • 检查所有代码生成设置是否真的相同(调试和发布)
  • 检查我是否使用正确的库版本进行调试和发布
  • 如果我的.obj文件是旧版本,请进行全新的构建

这些都不起作用。但是,如果我将自己项目的运行时库也设置为 Multithreaded-Debug 进行发布,则它可以编译并很好地进行发布。这显然不是理想的解决方案。

我还不明白的是,尽管我明确将其运行时库设置为多线程(/ MT)发行,但DirectXTex库似乎使用MT_StaticDebug构建DirectXTex的发行配置(至少错误消息表明了这一点)。 。我该如何解决

解决方法

GitHub repo中的DirectXTex_Desktop_2019.vcxproj设置为对{em> Debug 使用/MDd,对 Release 使用/MD。出于多种原因,建议通过静态CRT链接使用基于DLL的Visual C ++运行时。

话虽如此,如果您使用的是静态链接,则应该验证每个平台/配置组合中的设置是否正确,因为似乎所有调试配置中都没有设置/MTd案件。例如,您的项目中是否同时具有x86和x64平台?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。