升级到 win 10 然后我的 Direct3D11 项目不会 link
Upgraded to win 10 and then my Direct3D11 project wouldn't link
这是一个非常具体的问题,- 对此深表歉意。
我一直在使用 Direct3D 11 构建图形实时应用程序。我在 Win7 OS 上启动它。然后我升级到 Win10,当我再次尝试编译解决方案时,链接器像感染了硅微芯片的瘟疫一样吐了出来。
它在甚至不使用给定函数的对象中喷出未解析的符号。
- __imp__wassert
- strlen
- 晶圆厂
- __imp__CrtDbgReportW
- sprt
- 以及更多
我得出结论,大多数有问题的函数主要是 C 函数。我知道 C 函数不再包含在 C++ 头文件和库中,因此我确保明确包含所有相关的 C 库。
我已经阅读并遵循了其他大多数遇到 Windows 10 搞砸代码问题的人的解决方案。其中之一是:
我还尝试实际告诉链接器在哪里寻找 -lib 文件,以防编译器或项目错过备忘录。
在我的电脑上,Direct3D 库的位置是:C:\Program Files (x86)\Windows Kits\Lib.0.10586.0\um\arm64
如您所见,我试图强制它使用 Win10 lib 版本,以防万一。
我从一开始就试图发现自己在做一些愚蠢的事情:
- 我寻找完整的包含路径来查看它这已经开始了雪崩:失败
- 我尝试删除 /ZI 编译器选项:失败
- 将 DirectX 库重新链接到当时的所有不同版本:失败
- 将 vcrumtime.lib 显式包含到附加链接器库中:成功(删除了一半的错误)
- 创建一个全新的项目并从头开始包括所有内容:失败
- 添加 MSVCRTD.lib : 失败
- 将目标平台更改为 64 位:失败
- 尝试在某些独立工具中包含 stdio.h 类:失败
- 尝试在链接器中包含 Winmm.lib:失败
我在互联网上漫游了十年(仅一个月),以找到一些解决方案,但一无所获。
我希望你们中的一些人知道我可能犯了什么蠢事。
所有建议都会有所帮助。
您很可能 link 使用与 VS 2015 不兼容的静态库,因为它使用 Universal CRT。例如,旧版 DirectX SDK 库 DXERR.LIB
在使用 VS 2015 时无法 link。确保使用 VS 2015 重建所有代码并避免使用为其他版本的 Visual C++ 构建的静态库。
您也无法在 x86 或 x64 PC link 上使用 64 位 ARM 库将您的项目 link 和 运行。
您不需要使用 Windows 10 SDK for Win32 桌面应用程序,尽管您当然可以。
这是一个非常具体的问题,- 对此深表歉意。
我一直在使用 Direct3D 11 构建图形实时应用程序。我在 Win7 OS 上启动它。然后我升级到 Win10,当我再次尝试编译解决方案时,链接器像感染了硅微芯片的瘟疫一样吐了出来。
它在甚至不使用给定函数的对象中喷出未解析的符号。
- __imp__wassert
- strlen
- 晶圆厂
- __imp__CrtDbgReportW
- sprt
- 以及更多
我得出结论,大多数有问题的函数主要是 C 函数。我知道 C 函数不再包含在 C++ 头文件和库中,因此我确保明确包含所有相关的 C 库。
我已经阅读并遵循了其他大多数遇到 Windows 10 搞砸代码问题的人的解决方案。其中之一是:
我还尝试实际告诉链接器在哪里寻找 -lib 文件,以防编译器或项目错过备忘录。
在我的电脑上,Direct3D 库的位置是:C:\Program Files (x86)\Windows Kits\Lib.0.10586.0\um\arm64
如您所见,我试图强制它使用 Win10 lib 版本,以防万一。
我从一开始就试图发现自己在做一些愚蠢的事情:
- 我寻找完整的包含路径来查看它这已经开始了雪崩:失败
- 我尝试删除 /ZI 编译器选项:失败
- 将 DirectX 库重新链接到当时的所有不同版本:失败
- 将 vcrumtime.lib 显式包含到附加链接器库中:成功(删除了一半的错误)
- 创建一个全新的项目并从头开始包括所有内容:失败
- 添加 MSVCRTD.lib : 失败
- 将目标平台更改为 64 位:失败
- 尝试在某些独立工具中包含 stdio.h 类:失败
- 尝试在链接器中包含 Winmm.lib:失败
我在互联网上漫游了十年(仅一个月),以找到一些解决方案,但一无所获。
我希望你们中的一些人知道我可能犯了什么蠢事。
所有建议都会有所帮助。
您很可能 link 使用与 VS 2015 不兼容的静态库,因为它使用 Universal CRT。例如,旧版 DirectX SDK 库 DXERR.LIB
在使用 VS 2015 时无法 link。确保使用 VS 2015 重建所有代码并避免使用为其他版本的 Visual C++ 构建的静态库。
您也无法在 x86 或 x64 PC link 上使用 64 位 ARM 库将您的项目 link 和 运行。
您不需要使用 Windows 10 SDK for Win32 桌面应用程序,尽管您当然可以。