ele*_*ect 8 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
Run Code Online (Sandbox Code Playgroud)
目瞪口呆,他们说要切换
项目属性 -> 配置属性 -> 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
Run Code Online (Sandbox Code Playgroud)
此答案表示该项目仅与 C 运行时 (CRT) 库的一部分相关联,msvcrtd.lib. 我还需要链接库vcruntimed.lib和ucrtd.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社区版
如果您因为 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)
Run Code Online (Sandbox Code Playgroud)