升级到赢得10,然后我的Direct3D11项目将无法链接

时间:2016-07-25 22:56:19

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

这是一个非常具体的问题, - 我为此道歉。

我使用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文件,以防编译器或项目错过备忘录。

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

正如您所看到的,我试图强制它使用Win10 lib版本,以防这是一个要求。

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

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

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

我希望你们中的一些人知道我可能会犯下什么样的愚蠢行为。

所有建议都会有所帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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