Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build fails #335

Open
Chaojimengnan opened this issue Feb 6, 2022 · 5 comments
Open

Build fails #335

Chaojimengnan opened this issue Feb 6, 2022 · 5 comments

Comments

@Chaojimengnan
Copy link

I used VS2022 and CMake version 3.21.1 for the build. Here is my error message:

[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/repeated_field.h(294,38): error C2374: 'kRepHeaderSize': redefinition; multiple initialization [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/repeated_field.h(294): message : see declaration of 'kRepHeaderSize' [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/repeated_field.h(295): message : while compiling class template static data member 'const size_t google::protobuf::RepeatedField<google::protobuf::int32>::kRepHeaderSize' [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/repeated_field.h(1043): message : while compiling class template member function 'int google::protobuf::RepeatedField<google::protobuf::int32>::size(void) const' [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/descriptor.pb.h(4052): message : see reference to function template instantiation 'int google::protobuf::RepeatedField<google::protobuf::int32>::size(void) const' being compiled [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/descriptor.pb.h(509): message : see reference to class template instantiation 'google::protobuf::RepeatedField<google::protobuf::int32>' being compiled [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build]   field_mask.pb.cc
[build]   generated_message_reflection.cc
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/repeated_field.h(294,38): error C2374: 'kRepHeaderSize': redefinition; multiple initialization [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/repeated_field.h(294): message : see declaration of 'kRepHeaderSize' [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/repeated_field.h(295): message : while compiling class template static data member 'const size_t google::protobuf::RepeatedField<google::protobuf::int32>::kRepHeaderSize' [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/repeated_field.h(1043): message : while compiling class template member function 'int google::protobuf::RepeatedField<google::protobuf::int32>::size(void) const' [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/descriptor.pb.h(4052): message : see reference to function template instantiation 'int google::protobuf::RepeatedField<google::protobuf::int32>::size(void) const' being compiled [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]
[build] D:\base\projects\s2client-api\contrib\protobuf\src\google/protobuf/descriptor.pb.h(509): message : see reference to class template instantiation 'google::protobuf::RepeatedField<google::protobuf::int32>' being compiled [D:\base\projects\s2client-api\output\x64\Release\contrib\protobuf\cmake\libprotobuf.vcxproj]

This looks like protobuf's problem, here is the definition of kRepHeaderSize, I don't think there is something wrong, but it gets error

template<typename Element>
const size_t RepeatedField<Element>::kRepHeaderSize =
    reinterpret_cast<size_t>(&reinterpret_cast<Rep*>(16)->elements[0]) - 16;
@alkurbatov
Copy link
Contributor

alkurbatov commented Feb 6, 2022

Hi @Chaojimengnan
This API is outdated and doesn't support fresh tools, please try with https://github.com/cpp-sc2/cpp-sc2
Another solution is manual update of the protobuf submodule.

@Chaojimengnan
Copy link
Author

Hi @Chaojimengnan This API is outdated and doesn't support fresh tools, please try with https://github.com/cpp-sc2/cpp-sc2 Another solution is manual update of the protobuf submodule.

It works, thank you!!

@Andrysky
Copy link

@alkurbatov hi
Can you please tell me where is the root of the problem? what needs to be updated and edited?
I have the same problem in another project.

@alkurbatov
Copy link
Contributor

Hi @Andrysky
The root is in the newer compiler. Simple fix for this problem (in case you don't want to use my fork) is to update the protobuf submodule, all the needed fixes are already there.

@leanid
Copy link

leanid commented Aug 15, 2023

We found next fix:

modified   Libs/third_party/protobuf/protobuf-3.0.0/src/google/protobuf/repeated_field.h
@@ -294,6 +294,9 @@ template<typename Element>
 const size_t RepeatedField<Element>::kRepHeaderSize =
     reinterpret_cast<size_t>(&reinterpret_cast<Rep*>(16)->elements[0]) - 16;
 
+const size_t RepeatedField<int32>::kRepHeaderSize =
+    reinterpret_cast<size_t>(&reinterpret_cast<Rep*>(16)->elements[0]) - 16;
+
 namespace internal {
 template <typename It> class RepeatedPtrIterator;
 template <typename It, typename VoidPtr> class RepeatedPtrOverPtrsIterator;

Work on Visual Studio 2022 Version 17.7.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants