LNK2019 未解析的外部符号 _CrtDbgReport 在函数 _CRT_RTC_INIT SDL2 中引用

新手上路,请多包涵

我正在尝试编译 apitest ..

克隆并 cmake -G "Visual Studio 14 2015 Win64" .. 按照指示,一切正常

第一个问题,很多,我什至没有得到错误列表:

 error LNK2019: unresolved external symbol _CrtDbgReport referenced in function _CRT_RTC_INIT

Gogled,他们说要切换

项目属性 -> 配置属性 -> C/C++ -> 代码生成 -> 运行时库

从多线程 DLL 到多线程调试 DLL

好的,我尝试再次构建,它再次失败,但至少这次我得到了错误列表..

又是我的朋友:

 Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol _CrtDbgReport referenced in function _CRT_RTC_INIT   SDL2    C:\Users\GBarbieri\Documents\Visual Studio 2015\Projects\apitest_out\thirdparty\SDL2-2.0.1\MSVCRTD.lib(_init_.obj) 1

答案 表示该项目仅与 C 运行时 (CRT) 库的一部分 msvcrtd.lib 。我还需要链接库 vcruntimed.libucrtd.lib

很好,但是怎么做?

apitest 是基于许多项目的解决方案,我想我必须手动将一些东西添加到 SDL2 中。我尝试了很多尝试,尤其是在 Linker -> Input -> Additional Dependencies 下,但我从来没有让它工作

我在 msvcrtd.lib 下找到了 --- C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib 虽然我猜该解决方案正在尝试构建自己的解决方案。

我发现 vcruntimed.lib 在与 msvcrtd.lib 相同的地方。而是 ucrtd.lib 位于 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64

提前致谢..

ps:我有VS15社区版

原文由 elect 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
2 个回答

这似乎是一个 SDL 问题。 是 SDL 论坛中关于它的讨论,基本上有以下解决方案 - 添加您提到的库,采用适当的 VS2015 版本构建(线程中有一个链接)或从源构建 SDL(线程提到应该也工作)。

原文由 Rudolfs Bundulis 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您因为在 Google 上搜索到“错误 LNK2001:无法解析的外部符号 __CrtDbgReport”而最终来到这里,那么这是一个简单的检查…

如果您将工作 DEBUG 与非工作 RELEASE 项目设置进行比较并在它们之间复制/粘贴,则很容易将预处理器定义“_DEBUG”错误地复制到 RELEASE 项目中。在快速而草率的剪切和粘贴之后,我只是追了两个令人沮丧的小时……看看下面找到它需要多长时间:

 WIN32_LEAN_AND_MEAN;WIN32;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)

原文由 Darrin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题