std :: string生成链接器错误-const char *不会。为什么?

时间:2019-01-10 22:55:11

标签: c++ string std

就像标题上说的那样。.我得到了这段代码

std::string dir;
(ls == 1) ? dir = "Long" : dir = "Short"; 

会产生我不理解的错误

LNK2019: unresolved external symbol _CrtDbgReportW referenced in function 
"void * __cdecl std::_Allocate(unsigned __int64,unsigned __int64,bool)

当我切换到

const char* dir;
(ls == 1) ? dir = "Long" : dir = "Short"; 

一切正常。

那是什么交易?

1 个答案:

答案 0 :(得分:3)

std::string dir;
(ls == 1) ? dir = "Long" : dir = "Short"; 

dirstd::string,这是一个相当复杂的类,它将从整个标准库中逐位提取内容,包括似乎正在调用Windows调试帮助程序功能的内存分配{ {1}},在某些情况下。无论出于何种原因,都不会链接此调试帮助器功能。

但是在

_CrtDbgReportW

const char* dir; (ls == 1) ? dir = "Long" : dir = "Short"; 只是一个简单的指针,一个地址。 dir只需将dir = "Long"指向字符串文字dir。这只是一个简单的任务,不需要任何库的帮助。