编写linux下J1939的解析协议栈出错,提示 错误:undefined reference to `vtable for CJ1939'搜索google发现大都说是cpp中添加了Q_OBJECT,但是我这个没有继承qt的任何类,后来发先原来是虚函数没有实现造成的,于是果断写了个类继承CJ1939,并在子类中实现了虚函数,编译还是出错。怎么回事呢?继续研究了一下104的协议,发现原来虚函数的定义出了问题:
virtual int j1939_hal_trans_canpkt(const CAN_PACKET_T *pkt_ptr)= 0;;
virtual int j1939_hal_canerror_process()= 0;;
virtual int j1939_al_rcvcanpkt_process(J1939_RX_MESSAGE_T *msg_ptr)= 0;;
在函数后面加上 =0;
解决问题。
当时看到这个104的虚函数时还疑问为什么会有函数=0;原来如此啊,看来写C的对c++确实不熟悉。