在protobuf类中的Remy源代码(github)编译错误

时间:2018-03-18 17:03:42

标签: c++ c networking network-programming

我试图使用此链接中提供的intructions运行Remy项目(与计算机生成的网络协议相关)源代码; https://github.com/tcpexmachina/remy。代码也来自此链接。

我使用的是protobuf 3.5.1版本,Ubuntu版本是14.04。当我运行' make'按照自述文件中的说明分别运行./autogen.sh和./configure后命令,我收到此错误:

In file included from configrange.hh:4:0,
from evaluator.cc:3:
../protobufs/dna.pb.h:4210:20: error: base class ‘struct         
google::protobuf::internal::integral_constant<bool, true>’ has a    
non-virtual destructor [-Werror=effc++]
template <> struct is_proto_enum< ::RemyBuffers::MemoryRange_Axis> : 
::google::protobuf::internal::true_type {};

我查看了存储库的问题部分,但没有列出任何此类错误。是否有可能该项目使用旧版本的protobuf导致此错误?还有人可以解释什么是&#34; -Werror = effc ++&#34;旗? 如果有人在此之前遇到此错误或有任何此类问题的经验,请帮我解决此错误。 三江源

1 个答案:

答案 0 :(得分:1)

标记-Weffc++会在您的代码违反Scott Meyers在其书籍( Effective C ++ 系列)中定义的任何样式指南时启用警告。
其中一条指南告诉我们基类应该已经定义了虚拟析构函数 - 并且你有关于它的编译器消息。其他指南是

 Define a copy constructor and an assignment operator for classes with dynamically-allocated memory.
 Prefer initialization to assignment in constructors.
 Have operator= return a reference to *this.
 Don’t try to return a reference when you must return an object.
 Distinguish between prefix and postfix forms of increment and decrement operators.
 Never overload &&, ||, or ,.

通过启用-Weffc++,您将只获得警告,但我在{编译器标志列表'中也定义了-Werror-Werror

  

将所有警告变为错误

并且您的编辑已中止。我认为你应该从编译器标志列表中删除Weffc++-Werror来编译你的代码。