【问题标题】:Using ostringstream causing program crash使用 ostringstream 导致程序崩溃
【发布时间】:2015-08-18 17:50:52
【问题描述】:

我有一些需要维护的旧 C++ 应用程序/服务在 Windows 2003 上运行(不是选择)。我已经完成了一切准备工作并使用 VS 2013,但现在我无法让任何 C++ 项目再次工作。他们只是崩溃。我将范围缩小到使用 stringstream 时,所以我编写了一个示例 Win32 exe 进行测试。

这些是我在 VS 2013 Update 5 中更改的唯一设置: 设置为使用平台工具集 = Visual Studio 2013 - Windows XP (v120_xp)。特点 Set = 使用多字节字符集。

int _tmain(int argc, _TCHAR* argv[])
{
    ostringstream zs;
    zs << "Hello";
    string strTemp = zs.str();
    printf("%s\n", zs.str().c_str());

    return 0;
}

它在 zs 上崩溃

【问题讨论】:

  • 请详细说明只是崩溃!您可能缺少一些 DLL 或绑定到错误的 DLL。
  • redist DLL 在那里。我从 2010 年到 2013 年的每个版本都有它们(msxxx100.dll、110.dll 和 120.dll)。当您缺少相应的 redist dll 时,问题不会崩溃。操作系统显示缺少所需 DLL 的消息。当我尝试附加到 zs 时发生崩溃。在这个例子中,它在 zs
  • 什么是异常/编译器错误信息?通常程序不会“只是崩溃”
  • ILLEGAL_INSTRUCTION (0xc000001d) 地址为 0x00416ab9。我可以注释掉 zs
  • 你试过zs &lt;&lt; L"Hello";了吗?可能是多字节字符识别的问题。

标签: c++ visual-studio-2013 crash


【解决方案1】:

在 Visual Studio 2013 及更高版本中,用于多字节字符编码 (MBCS) 的 MFC 库作为 Visual Studio 的单独插件提供,可从 MSDN 下载站点下载。

https://msdn.microsoft.com/en-us/library/5z097dxa.aspx

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 2015-10-21
    • 2016-06-04
    • 2011-08-24
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多