更改运行时库破坏了 std::string.为什么

Changing Runtime Library broke std::string. Why?

本文关键字:std string 为什么 坏了 运行时      更新时间:2023-10-16

>编辑:我已经通过将我的运行时库设置为从项目默认值继承来解决这个问题。我使用的是多步 DLL(/MT),因为我使用的 SDL-2 教程就是这样做的。

有人可以解释为什么这会破坏 c++ 的字符串吗?

<小时 />

每当我尝试使用字符串时,编译器都会给我以下错误:

LNK2019未解析的外部符号__imp___invalid_parameter函数"void * __cdecl std::_Allocate(unsigned int,unsigned int,bool)"中引用

LNK2019函数"void * __cdecl std::_Allocate(unsigned int,unsigned int,bool)"中引用__imp___CrtDbgReportW未解析的外部符号

我已经将所有代码剥离到最低限度,如下所示:

#include <string>
int main(int argc, char *argv[]) {
    std::string resPath;
    return 0;
}

我不知道该去哪里看。有人有想法吗?

我正在使用 MSVS 社区 2015。

> 我刚刚在VS2017上遇到了同样的问题。 事实证明,我的运行时库设置是错误的。 我不小心将其设置为多线程DLL(/MD)进行调试配置。 它应该是多线程调试 DLL (/MDd) 或多线程调试 (/MTd)。