【发布时间】:2012-02-15 15:16:56
【问题描述】:
可能重复:
g++ undefined reference to typeinfo
Undefined symbols “vtable for …” and “typeinfo for…”?
我无法使用我的课程。
class Accel {
public:
virtual void initialize(void);
virtual void measure(void);
virtual void calibrate(void);
virtual const int getFlightData(byte);
};
class Accel_ad : public Accel {
public:
Accel_ad() : Accel(){}
void initialize(void) {/*code code code...*/}
void measure(void) {/*measure code*/}
const int getFlightData(byte axis){/*getting data*/}
void calibrate(void) {
int findZero[FINDZERO];
int dataAddress;
uint8_t data[2];
for (byte calAxis = XAXIS; calAxis < ZAXIS; calAxis++) {
if (calAxis == YAXIS) dataAddress = 0x32;
if (calAxis == XAXIS) dataAddress = 0x34;
if (calAxis == ZAXIS) dataAddress = 0x36;
for (byte i=0; i<FINDZERO; i++) {
readReverseWordI2C(dataAddress,data);
findZero[i] = (data[1] << 8) | (data[0]);;
Delay_ms(10);
}
accelZero[calAxis] = findMedian(findZero, FINDZERO);
}
// replace with estimated Z axis 0g value
accelZero[ZAXIS] = (accelZero[XAXIS] + accelZero[PITCH]) / 2;
// store accel value that represents 1g
measure();
accelOneG = -accelData[ZAXIS];
}
main.cpp
Accel_ad accel;//all ok
accel.initialize();//all ok
accel.calibrate();//ERROR: undefined reference to `typeinfo for Accel'
accel.measure();//All okey
谁知道怎么了?
我得到的整个错误是:
.\obj\main.o:(.rodata._ZTI8Accel_ad[typeinfo for Accel_ad]+0x8): undefined reference to `typeinfo for Accel' [cc] collect2: ld returned 1 exit status
【问题讨论】:
-
发布 exact 完整编译错误。
-
[cc] ..\obj\main.o:(.rodata._ZTI8Accel_ad[typeinfo for Accel_ad]+0x8): undefined reference to `typeinfo for Accel' [cc] collect2: ld returned 1退出状态
-
@wsevendays:请使用确切的错误消息更新问题。通常,通过更新您的帖子而不是回复评论来回应澄清请求。一方面,一个问题应该是可以理解的,无需阅读 cmets。另一方面,SO 是一个 QA 和网站,而不是一个论坛,并且 cmets 不适合(也不适合)讨论。
标签: c++ g++ linker-errors virtual typeinfo