C++ 更改运行时库破坏了std::string。为什么?

C++ 更改运行时库破坏了std::string。为什么?,c++,visual-studio,c++11,sdl-2,C++,Visual Studio,C++11,Sdl 2,编辑: 我已通过将运行时库设置为从project default继承解决了此问题。 我使用的是多线程DLL(/MT),因为我使用的SDL-2教程就是这么做的 有人能解释一下为什么会打破C++的字符串吗? 每当我尝试使用字符串时,我的编译器都会出现以下错误: LNK2019未解析的外部符号\uuuu imp\uuuuu函数“void*\uuuu cdecl std::\u Allocate(无符号整数、无符号整数、bool)”中引用的参数无效 LNK2019未解析的外部符号uuuu imp_uu

编辑: 我已通过将运行时库设置为从project default继承解决了此问题。 我使用的是多线程DLL(/MT),因为我使用的SDL-2教程就是这么做的

有人能解释一下为什么会打破C++的字符串吗?
每当我尝试使用字符串时,我的编译器都会出现以下错误:

LNK2019未解析的外部符号\uuuu imp\uuuuu函数“void*\uuuu cdecl std::\u Allocate(无符号整数、无符号整数、bool)”中引用的参数无效

LNK2019未解析的外部符号uuuu imp_uuuuucrtdbgReportw在函数“void*uuu cdecl std::_Allocate(无符号整数、无符号整数、bool)”中引用

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

#include <string>

int main(int argc, char *argv[]) {
    std::string resPath;
    return 0;
}
#包括
int main(int argc,char*argv[]){
std::字符串响应路径;
返回0;
}
我不知道去哪里找。有人有主意吗


我正在使用MSVS Community 2015。

我刚刚遇到了与VS2017相同的问题。结果是我的运行库设置有误。在调试配置中,我不小心将其设置为多线程DLL(/MD)。它应该是多线程调试DLL(/MDd)或多线程调试(/MTd)。

MSV的哪个版本?请查看是否。如果这样更改运行库,则需要进行完整重建。