【发布时间】: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