【发布时间】:2019-01-10 22:55:10
【问题描述】:
就像标题所说的那样......我得到了这段代码
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";
一切都很好。
那里有什么交易?
【问题讨论】:
-
简单地写
std::string dir = (ls == 1) ? "Long" : "Short";怎么样? -
看起来您可能将一些调试库与发布版本混合在一起。
-
我不是在问如何使代码工作,它确实工作。我在问为什么 std::string 会产生错误而 const char* 不会。即使我把它写在一行上它也不会编译
-
因为你没有提供编译和链接的命令行,所以报错。
-
@Nirvikalpa Samadhi:这个问题其实很容易回答:这是因为
std::string在内部使用了CrtDbgReportW函数而const char*没有。