![]() |
1
1
错误表明,不知何故,您的程序有此扩展的定义的两个副本。这可能不是protoc的错,而是程序构建过程中的一些错误。 我的理论是:你的proto文件已经被分别编译并链接到两个不同的组件/库中,然后它们都被加载到同一个程序中。其中一个组件是您的,另一个是共享相同协议的其他人的。另一个组件之前已经在使用protobuf 3.5.1,但是您的组件使用的是2.3.0。这意味着您的程序中实际上有两个libprotobuf副本。因此,使用libprotobuf的不同副本加载扩展的两个副本,因此没有错误。但现在您已经将组件切换为使用protobuf 3.5.1,因此现在只加载了libprotobuf的一个副本,并且proto文件的两个副本都加载到了libprotobuf的一个副本中。所以现在,你得到一个错误。 要解决这个问题,您需要确保您的程序正好包含每个proto文件的一个编译副本。如果两个组件需要共享一个协议,那么需要将该协议分解成一个单独的组件来共享。 |
![]() |
2
0
因此,请检查这些重复的扩展名,这些扩展名可以在多个文件中定义。 |