我在编译iPhone项目时遇到以下错误:
"vtable for oned::MultiFormatUPCEANReader", referenced from:
__ZTVN4oned23MultiFormatUPCEANReaderE$non_lazy_ptr in MultiFormatUPCEANReader.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
有人知道我该怎么解决它吗?
发布于 2009-09-22 05:05:26
问题似乎是,在类MultiFormatUPCEANReader中,我声明了一个构造函数和析构函数,但没有为析构函数编写主体,这导致了这个恼人的问题。希望这能帮助别人解决他们的编译错误。这是一个可怕的编译器错误,信息很少!
发布于 2013-01-28 23:22:06
在我的例子中,它是基类中定义的纯虚方法,它在派生类(更具体地说是vtable中的第一个虚方法)中声明但没有实现,例如:
class Base
{
public:
virtual int foo() = 0;
virtual int bar() = 0;
};
class Derived : public Base
{
public:
Derived() {}
~Derived() {}
virtual int foo(); // <-- causes this obscure linker error
virtual int bar() {return 0;}
};
发布于 2010-02-02 03:36:42
当用户忘记将类名放在cpp文件中方法定义的前面时,也会发生同样的错误-就像我刚才所做的那样。而且这不是xcode的事情,我使用cmake来构建,使用gcc作为编译器(就像xcode通常所做的那样)。
https://stackoverflow.com/questions/1458180
复制相似问题