未定义引用谷歌协议缓冲类

Undefined reference google protocol buffer class

本文关键字:缓冲 协议 谷歌 引用 未定义      更新时间:2023-10-16

在我要编译的文件中,我有:

#include "ippacket.pb.h"
ip::PacketBuffer packet;

已编译的proto文件包含:

package ip;
message PacketBuffer {

我的问题是试图编译,我得到:add_packet.cpp:(.text+0xc0):未定义引用' ip::PacketBuffer::PacketBuffer()'

我不明白为什么引用是未定义的,如果我已经包括头,头包含类?

从Google protobuf生成的类不仅仅是头文件,所以您还需要编译生成的源代码。您还需要确保链接到protobuf库。编译器调用的示例如下:

g++ -Wall -o prototest main.cc ipacket.pb.cc -lprotobuf