に未定義の参照、私は、リンカエラーを取得: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-config設定からnfigフラグ:
g++ -o send sendercode.cpp -std=c++11 -lprotobuf -pthread -lpthread -g
また、私は正常にコンパイルが、その後のタイプを設定するときにセグメンテーション違反、このブロックのクラスへのポインタを作成することができ、
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
初期化されていないかのように動作しています。初期化の手順を忘れましたか?
あなたの問題に関連しますが、' -lpthreadないが '不要です'-lpthread'です。 – Nawaz
あなたのsegfaultは初期化されていないポインタの逆参照によって引き起こされる –