这个错误是什么?

时间:2014-08-31 22:45:20

标签: c++ c++11

#include <iostream>
#include <vector>
#include <string>
using namespace std;


class TaroGrid{
public:
    int getNumber(vector<string> grid)
    {
        int n = grid.size(), max = 0, count = 1;
        for (int j = 0; j < n; j++)
        {
            for (int i = 1; i < n; i++)
            {
                if (grid[i][j] == grid[i - 1][j]) count++;
                else count = 1;
                if (count > max) max = count;
            }
        }
        return max;
    };
};


int main()
{
    TaroGrid test;
    vector<string> cool;
    int t = test.getNumber(cool);
    cout << "The largest number of cells Taro can choose is:  " << t <<endl;
    return 0;
}

您的代码未编译:

错误链接:

TaroGrid-stub.o:In function `main':
   TaroGrid-stub.cc:(.text.startup+0x0): multiple definition of `main'
TaroGrid.o:
   TaroGrid-stub.cc:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status

1 个答案:

答案 0 :(得分:2)

您已编译TaroGrid-stub.cc两次,以不同的方式命名对象文件TaroGrid-stub.oTaroGrid.o。这两个对象大多相同(它们可能是相同代码的不同版本)。他们肯定都有main函数。

然后您将两个对象都传递给链接器,链接器无法确定哪个是真实的main

有几种可能的解决方案。

  1. 删除旧的目标文件。
  2. 不要与*.o链接,但实际上要命名您要使用的特定对象文件。