当前位置: 首页 > 知识库问答 >
问题:

编译停留在以前的编译C++上

赖星驰
2023-03-14
   #include <iostream>
   #include <fstream>
   #include <string>

   using namespace std;



   int main() {

     cout << "Hello";

   }

当我尝试编译这个程序时,它仍然编译上一个程序:

  #include <iostream>
  #include <fstream>
  #include <string>

  using namespace std;


  int main() {

      int a, b;
      cin >> a >> b;
      cout << a + b << endl;

      return 0;
  }

我在命令提示符下执行gcc code.cpp(文件名)和代码,显示如下:

     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: 
     C:\Users\User\AppData\Local\Temp\cctefhtT.o:code.cpp:(.text+0x19): undefined reference to 
     `std::cout'
     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: 
     C:\Users\User\AppData\Local\Temp\cctefhtT.o:code.cpp:(.text+0x1e): undefined reference to 
     `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> > 
     (std::basic_ostream<char, std::char_traits<char> >&, char const*)'
      c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: 
      C:\Users\User\AppData\Local\Temp\cctefhtT.o:code.cpp:(.text+0x35): undefined reference to 
      `std::ios_base::Init::~Init()'
      c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: 
      C:\Users\User\AppData\Local\Temp\cctefhtT.o:code.cpp:(.text+0x56): undefined reference to 
      `std::ios_base::Init::Init()'
      collect2.exe: error: ld returned 1 exit status

我的编辑是Sublime的。

共有1个答案

岳均
2023-03-14

您正在看到您以前程序的结果,因为您的新程序的编译失败了。

编译你的程序失败的原因是因为你的程序依赖于来自C++标准库的代码。 您的程序没有链接到C++标准库,因为您使用了gcc,它是C的编译器。您需要使用g++,它是C++的编译器。

 类似资料:
  • 本文向大家介绍C++ 用Clang编译,包括了C++ 用Clang编译的使用技巧和注意事项,需要的朋友参考一下 示例 由于锵前端被设计为是与GCC兼容,当你交换可通过GCC编译大多数程序将编译g++通过clang++在构建脚本。如果没有-std=version给出,将使用gnu11。 习惯了MSVC的Windows用户可以cl.exe与交换clang-cl.exe。默认情况下,clang尝试与已安

  • 问题内容: 在编译C 时,您当然会为要编译的目标平台使用编译器。是否有针对JVM的C 编译器(因此,不是使用Java“本机”接口,而是将C ++代码编译为Java字节码)? 问题答案: NestedVM为Java字节码提供二进制转换。这是通过让GCC编译为MIPS二进制文件然后将其转换为Java类文件来完成的。因此,任何用C,C ++,Fortran或GCC支持的任何其他语言编写的应用程序都可以在

  • 我有以下代码: 我希望它输出“0,1,2,3”并停止,但它输出的是一系列无穷无尽的“0、1、2、3、4、5……” 看起来比较< code>di 如果我只是注释掉< code >,delta=mc[di],我会正常得到“0,1,2,3”。无辜作业有什么问题? 我正在使用Ideone.com g14带-O2选项。

  • 我使用maven命令来清理、构建整个项目、创建war并部署到服务器。我不能使用Intellij来做这件事,因为我只有社区版。它在与intellij相同的目录中构建项目。 为了加快速度,我编写了一个脚本,可以在本地“target”目录中找到比服务器中更新的已编译文件,并进行复制。虽然一切正常,但问题是Intellij并没有将使用maven编译的类视为应该跳过并重新构建整个项目的类。 目前它的工作原理

  • 上一个小节 C 语言的程序结构中我们简单的认识了一下 C 语言的程序到底由那些部分组成,但是仅仅了解 C 语言的程序结构还不够,仅仅是万里长征走完了第一步,后面还需要进行很多的步骤才能让程序成为一个可以使用的工业产品。还记的上一个小节中我们提到的 gcc 吗?其实这是一个 C 语言的编译器,这一个小节我们就来学习一下编译器这个概念。 1. C 语言编译器 每个语言都需要编译器,甚至包括可以直接操作

  • 准备工作 Ubuntu 16.04 $ apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev unzip texinfo device-tree-compiler dosfstools libusb-1.0-0-

  • 所以我有一个用Java编写的方法: 假设我的应用程序调用了很多次... 在Java虚拟机上运行该方法的编译代码时,JVM将首先解释该方法。然后一段时间后,如果我理解正确,它将决定将其编译为机器语言。 此时, 它会被内存中的机器代码覆盖吗?如果被覆盖,大小差异问题将如何解决?如果将其写入内存中的其他位置,加载到内存中的字节码是否会被释放?而且,如果字节码和jit编译的代码都在内存中,当应用程序再次点