【问题标题】:C++ Programm Exe creates Error when startingC++ 程序 Exe 在启动时创建错误
【发布时间】:2017-03-08 15:27:41
【问题描述】:

我试图实现一个 c++ 程序,它应该简单地输出一些文本并创建一个 txt 文件并将数据放入这个文件中。我想在 Windows 中将此文件作为 .exe 执行。但是在启动时它立即崩溃并显示以下错误:

英文:“该程序不再工作”。

我在 CodeBlocks 中对此进行了编码,并使用了 GNU GCC 编译器。 我实现了以下代码:

#include <iostream>
#include <fstream>

using namespace std;



int main()
{
    cout << "Hello world! TEST" << endl;
      std::ofstream of("TEXT.TXT");

        of<<"Some text here"<<std::endl;
        of.flush();
        of.close();
        std::cout<<"wrote the file successfully!"<<std::endl;
    cout << "TEST Done" << endl;
}

调试器信息:

D:/Dokumente/Development/CodeBlocks/Test1/bin/Debug/Test1.exe 完毕 注册新类型:wxString 注册新类型:STL String 注册新类型:STL Vector 设置断点 调试器名称和版本:GNU gdb (GDB) 7.6.1 子进程PID:10052 程序收到信号 SIGILL,非法指令。 在std::piecewise_construct()()中

1 0x0040147c in _fu0___ZSt4cout () at D:\Dokumente\Devlopement\CodeBlocks\Test1\main.cpp:10

D:\Dokumente\Devlopement\CodeBlocks\Test1\main.cpp:10:86:beg:0x40147c 在 D:\Dokumente\Devlopement\CodeBlocks\Test1\main.cpp:10

1 0x0040147c in _fu0___ZSt4cout () at D:\Dokumente\Devlopement\CodeBlocks\Test1\main.cpp:10

D:\Dokumente\Devlopement\CodeBlocks\Test1\main.cpp:10:86:beg:0x40147c

编译器版本 mingw32-gcc-g++ 5.3.0-3 过去,当我第一次创建程序时,我无法启动它,因为缺少一些 dll。我必须把它放到文件夹中(libgcc_s_dw2-1.dll,libstdc++-6.dll) 他们会不会产生冲突?

【问题讨论】:

  • 不要发布截图。还请说明与编译器版本一起使用的 C++ 标准。
  • 为什么我不应该发布截图?打扰一下。我编辑了上面的帖子
  • 尝试创建of后,需要检查是否成功。
  • 很难对嵌入图像的关键字进行网络搜索;虽然,在这种情况下,图像对问题的价值不大,你可以很容易地不用它。如果它包含诊断信息,请将诊断信息复制并粘贴到问题中。如果无法复制,通常最好将它们打出来而不是发布屏幕截图。
  • 你可能有某种类型的 dll 冲突。

标签: c++ crash


【解决方案1】:

好的。我遇到了 dll 冲突的问题。我把选项

-static-libgcc -static-libstdc++

在编译器选项/链接器设置/其他链接器选项中。似乎编译器现在将正确的 dll 放入 exe 文件中,我不需要将错误的冲突 dll 放入同一路径。现在它完美地工作了。

谢谢。

【讨论】:

    猜你喜欢
    • 2021-03-18
    • 1970-01-01
    • 2010-09-19
    • 2015-06-17
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    相关资源
    最近更新 更多