c++无法编译文件

标签 c++

我是 C++ 的初学者,我正在尝试编写一个程序来寻找最大公因数。主要我有:

#include <iostream>
#include <cstdlib>
#include "longgcd.cpp"
int main(int argc, char* argv[]){
  long gcd(long m, long n);
  long m,n,g;
  m=atol(argv[1]);
  n=atol(argv[2]);
  g=gcd(m,n);
  std::cout<<"gcd("<<m<<","<<n<<")="<<g<<std::endl;
  return 0;
}

然后我将子函数放入另一个名为 longgcd.cpp 的文件中

#include <iostream>
#include <cstdlib>
long gcd( long m, long n){
  long r;
  while(n !=0){
    r=m%n;
    m=n;
    n=r;
  }
  return m;
}

不知为何 longgcd.cpp 无法编译。我得到一个错误:

/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [longgcd] Error 1

不知何故我很难运行这个程序并让它工作,我看不出它有什么问题。感谢您提供任何帮助或建议。

最佳答案

你能显示你用来编译的行吗?听起来你试图将 longgcd.cpp 独立编译为可执行文件,并且由于该文件没有 main,链接器正确地提示它找不到 主要

最简单的解决方案是将两个文件一起编译

g++ $FLAGS longgcd.cpp main.cpp

关于c++无法编译文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309351/

相关文章:

c++ - 只使用互斥锁实现读/写锁?

c++ - C++从文件中读取字符串

c++ - STL vector 、push_back() 和容量

c++ - std::cout 声明如何工作?

C++ Qt 信号和插槽未触发

c++ - 在负载测试中对 __pthread_mutex_cond_lock_full 断言失败

c++ - 如何使用asio简化多线程设计?

c++ - gperftools + apache + fcgi ,它不会写入文件

c++ - 有效传输平面图像以在 OpenGL 中渲染?

c++ - 如何使用 scanf 获取指针大小的整数?