体系结构的未定义符号 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一些非常详细的解释。
当我使用以下语法传递矢量地址时:
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一些非常详细的解释。