코드 작은 protobuf 클래스 (자체는 성공적으로 컴파일하는) 내가 링커 오류가 전화를 컴파일 할 시도 할 때 :C++ Protobuf이/소멸자 생성자에 대한 참조를 정의되지 않은
undefined reference to `ggf::Block::Leveling()'
undefined reference to `ggf::Block::~Leveling()'
이 오류를 발생시키는 코드의 라인 :
ggf::Block blockMessage;
protobuf :
package ggf;
message Leveling {
required int32 type = 1;
optional uint64 blockNumber = 2;
optional bytes blockData = 3;
}
그리고 마지막으로, 내 빌드 라인, 공동 PKG-설정에서 nfig 플래그 :
: 또는g++ -o send sendercode.cpp -std=c++11 -lprotobuf -pthread -lpthread -g
, 나는
ggf::Block *blockRequest;
blockRequest->set_type(10); //SIGSEGV
디버깅은 다음과 계시, 유형을 설정할 때 성공적으로 컴파일하지만 세그먼테이션 폴트 (segfault)이 블록 클래스에 대한 포인터를 만들 수 있습니다
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400d66 in ggf::Block::set_has_type (this=0x0) at block.pb.h:172
초기화되지 않은 것처럼 작동합니다. 초기화 단계를 놓쳤습니까?
문제와 관련,하지만'-lpthread되지 않음'불필요 '-lpthread'. – Nawaz
segfault가 초기화되지 않은 포인터를 참조 해제하여 발생했습니다 –