Realized that Google's official Protobuf implementation depends on libabsl, their Abseil C++ Library after Protobuf v22. Not only a dependency, but also they expose absl types at the public API. Now this has some consequences as follows.
- This creates an ODR violation risk for statically linked applications. For example, if an OSI application has another dependency on a project using
absl statically. Then, it will cause an ODR.
- Hence, Google's Protobuf implementation after v22 is safely usable as a shared object only.
I wonder what the OSI project's recommendation is for this situation, where the project still uses pre-v22 versions and recommends static linkage in the documentation.
Some related issues and PRs:
Realized that Google's official Protobuf implementation depends on
libabsl, their Abseil C++ Library after Protobuf v22. Not only a dependency, but also they exposeabsltypes at the public API. Now this has some consequences as follows.abslstatically. Then, it will cause an ODR.I wonder what the OSI project's recommendation is for this situation, where the project still uses pre-v22 versions and recommends static linkage in the documentation.
Some related issues and PRs: