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

时间:2016-03-04 10:26:52

标签: c++ linker visual-studio-2015

我正在尝试编译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   

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

好,但是怎么样?

apitest是基于许多项目的解决方案,我想我必须手动将一些东西添加到SDL2中。我尝试了很多尝试,特别是在Linker下 - >输入 - >额外的依赖关系,但我从来没有工作

我在msvcrtd.lib下找到了C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib,但我想解决方案是尝试构建自己的。{/ p>

我发现vcruntimed.libmsvcrtd.lib位于同一位置。相反,ucrtd.lib位于C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64

提前致谢..

Ps:我有VS15社区版

2 个答案:

答案 0 :(得分:2)

如果你最终来到这里是因为你在谷歌上搜索了“错误 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)

答案 1 :(得分:1)

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