gpt4 book ai didi

C++ Protobuf 未定义对构造函数/析构函数的引用

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:12 24 4
gpt4 key购买 nike

当尝试编译调用小型 protobuf 类(它本身已成功编译)的代码时,出现链接器错误:

undefined reference to `ggf::Block::Leveling()'
undefined reference to `ggf::Block::~Leveling()'

导致此错误的代码行:

ggf::Block blockMessage;

Protocol Buffer :

package ggf;
message Leveling {
required int32 type = 1;
optional uint64 blockNumber = 2;
optional bytes blockData = 3;
}

最后,我的构建行,来自 pkg-config 的配置标志:

g++ -o send sendercode.cpp -std=c++11 -lprotobuf -pthread -lpthread -g

或者,我可以创建一个指向这个 Block 类的指针,它编译成功但在设置类型时出现段错误,

ggf::Block *blockRequest;
blockRequest->set_type(10); //SIGSEGV

调试显示以下内容:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400d66 in ggf::Block::set_has_type (this=0x0) at block.pb.h:172

它就像没有初始化一样。我是不是错过了初始化步骤?

最佳答案

你还应该将 block.pb.cc 添加到编译文件列表中:

g++ -o send sendercode.cpp block.pb.cc -std=c++11 -lprotobuf -pthread -g

关于C++ Protobuf 未定义对构造函数/析构函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com