eclipse C++ ld: 1 duplicate symbol for architecture x86_64

想要在test_bignit.cpp里面使用bigint.cpp的函数

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

typedef string BigInt;
typedef vector<double> Poly;

BigInt multiply_int(const BigInt &a,const BigInt &b){
    Poly d(a.size()+b.size()-1,0);
    BigInt res;
    double temp=0;
    for(int i=0;i<a.size();i++){
        for(int j=0;j<b.size();j++){
            d[i+j] += (a[i]-48) * (b[j]-48);
        }
    }
    for(int i=0;i<d.size();i++)
    res.append(to_string((int)d[i]));
    return res;
}
#include <iostream>
#include <vector>

using namespace std;

#include "bigint.cpp"

int main()
{ 

  BigInt A,B;

  cin >> A >> B;

  cout << multiply_int(A,B) << endl;

}

一直报错:ld: 1 duplicate symbol for architecture x86_64

网上一直说import了重复的东西或者有多个main,好吧,查了很久,都没问题。。。

后来我把test_bigint.cpp中 #include "bigint.cpp" 删去,并在使用前加上函数定义

#include <iostream>
//#include "bigint.cpp"
using namespace std;
typedef string BigInt;
BigInt multiply_int(const BigInt &a,const BigInt &b);
int main()
{

  BigInt A,B;

  cin >> A >> B;

  cout << multiply_int(A,B) << endl;

}

 

解决问题。。。。。。。

posted @ 2017-09-20 09:54  切力  阅读(441)  评论(0编辑  收藏  举报