【问题标题】:Changing Runtime Library broke std::string. Why?更改运行时库破坏了 std::string。为什么?
【发布时间】:2016-05-10 11:17:46
【问题描述】:

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

有人能解释一下为什么这会破坏 c++ 的字符串吗?


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

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

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

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

#include <string>

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

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

我正在使用 MSVS 社区 2015。

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2012-03-27
    相关资源
    最近更新 更多