更改运行时库损坏了std :: string。为什么呢?

时间:2016-02-01 20:54:24

标签: c++ visual-studio c++11 sdl-2

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

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

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

  

LNK2019未解析的外部符号__imp___invalid_parameter在函数“void * __cdecl std :: _ Allocate(unsigned int,unsigned int,bool)”中引用“

     

LNK2019未解析的外部符号__imp___CrtDbgReportW在函数“void * __cdecl std :: _ Allocate(unsigned int,unsigned int,bool)”中引用“

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

#include <string>

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

我不知道在哪里看。有没有人有想法?

我正在使用MSVS社区2015。

1 个答案:

答案 0 :(得分:1)

我和VS2017有同样的问题。事实证明我的运行时库设置有误。我无意中将其设置为多线程DLL(/ MD)以进行调试配置。它应该是多线程调试DLL(/ MDd)或多线程调试(/ MTd)。