【问题标题】:Upgraded to win 10 and then my Direct3D11 project wouldn't link升级到 win 10 然后我的 Direct3D11 项目不会链接
【发布时间】:2016-07-25 22:56:18
【问题描述】:

这是一个非常具体的问题, - 对此我深表歉意。

我一直在使用 Direct3D 11 构建图形实时应用程序。我在 Win7 操作系统上启动它。然后我升级到 Win10,当我再次尝试编译解决方案时,链接器就像是感染了硅微芯片的瘟疫一样大喊大叫。

它会在甚至不使用给定函数的对象中吐出未解析的符号。

  • __imp__wassert
  • strlen
  • 晶圆厂
  • __imp__CrtDbgReportW
  • sprt
  • 等等

我得出的结论是,所讨论的大多数函数主要是 C 函数。我知道 C 函数不再包含在 C++ 头文件和库中,因此我确保明确包含所有相关的 C 库。

我已经阅读并遵循了大多数其他人的解决方案,他们在 Windows 10 搞砸了他们的代码时遇到了问题。其中之一是:Upgraded to Windows 10 and now WAMP won't work

我还尝试实际告诉链接器在哪里寻找 -lib 文件,以防编译器或项目错过备忘录。

在我的 PC 上,Direct3D 库的位置在这里:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\arm64

如您所见,我试图强制它使用 Win10 lib 版本,以防这是必需的。

我从一端开始试图发现自己在做一些愚蠢的事情:

  • 我寻找完整的包含路径来查看它已经引发了雪崩:失败
  • 我尝试删除 /ZI 编译器选项:失败
  • 当时将 DirectX 库重新链接到所有不同的版本一:失败
  • 将 vcrumtime.lib 显式包含到其他链接器库中:成功(删除了一半的错误)
  • 创建一个全新的项目并从头开始包含所有内容:失败
  • 添加 MSVCRTD.lib:失败
  • 将目标平台更改为 64 位:失败
  • 尝试在某些独立工具类中包含 stdio.h:失败
  • 尝试在链接器中包含 Winmm.lib:失败

我已经在互联网上漫游了十年(仅一个月),以找到一些解决方案,但一无所获。

我希望你们中的一些人知道我可能犯了什么小错误。

所有建议都会有所帮助。

【问题讨论】:

  • 具体问题太棒了!可悲的是,这实际上不是其中之一。是时候minimal reproducible example...
  • __imp__wassert 你在为 Unicode 编译吗? __imp__CrtDbgReportW 这是_DEBUG 构建吗? um\arm64你的目标平台是ARM64吗? include the vcrumtime.lib 您是静态链接还是动态链接CRT/MT[d]/MD[d])? I've read and followed the solutions of some of most of the other folks having problems 老实说,我认为你不分青红皂白地尝试随机事物使事情变得更糟。最好尝试回滚 all 您尝试的“修复”,然后发布 original 问题是什么 - 并提供完整的详细信息。

标签: c++ windows-10 directx-11


【解决方案1】:

您很可能正在链接与 VS 2015 不兼容的静态库,因为它使用 Universal CRT。例如,旧版 DirectX SDK 库 DXERR.LIB 在使用 VS 2015 时无法链接。确保使用 VS 2015 重新构建所有代码,并避免使用为其他版本的 Visual C++ 构建的静态库。

您也无法让您的项目在与 64 位 ARM 库链接的 x86 或 x64 PC 上链接和运行。

您不需要为 Win32 桌面应用程序使用 Windows 10 SDK,尽管您当然可以。

【讨论】:

  • 非常感谢!当谈到芯片上的指令集和底层架构时,你可以说我是一个完全的新手。我重新将所有文件导入新的 Win32 Windows 项目的过程,这解决了我的大部分问题。然后我对项目进行了改装以符合我的要求,但最终,您的回答对我帮助很大!问题的一部分是我试图告诉链接器在哪里可以找到库。我删除了这个(将其设置为继承..),其余的由 VS 完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 2018-09-20
  • 2012-05-22
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多