体系结构的未定义符号 x86_64:C++ OS X 向量

Undefined symbols for architecture x86_64: C++ OS X vectors

当我使用以下语法传递矢量地址时:

void myfunction(std::vector<double>*);
int main()
{
    std::vector<double> t;
    myfunction(&t);
    return 0;
}
void myfunction(std::vector<double> &v)
{
    cout << "The function ran" <<endl;
}

我收到这个错误,我不知道为什么。

pal-nat184-134-146:p25 pdevieti$ g++-4.9 test.cpp 
Undefined symbols for architecture x86_64:
  "myfunction(std::vector<double, std::allocator<double> >*)", referenced from:
      _main in ccVmpacj.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

改变这个:

void myfunction(std::vector<double>*);

对此:

void myfunction(std::vector<double>&);

错误是"myfunction"的声明和定义中的签名不同。您将 myfunction 声明为接收指向向量的指针的函数,但将其定义为接收引用的函数。从语言的角度来看,引用和指针是不同的东西。

参考this thread一些非常详细的解释。