我正在尝试编译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.lib
和ucrtd.lib
。
好,但是怎么样?
apitest是基于许多项目的解决方案,我想我必须手动将一些东西添加到SDL2中。我尝试了很多尝试,特别是在Linker下 - >输入 - >额外的依赖关系,但我从来没有工作
我在msvcrtd.lib
下找到了C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib
,但我想解决方案是尝试构建自己的。{/ p>
我发现vcruntimed.lib
与msvcrtd.lib
位于同一位置。相反,ucrtd.lib
位于C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
提前致谢..
Ps:我有VS15社区版
答案 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(线程)提到这也应该有效。)