我已经在一个测试项目中成功集成和配置了我的 CardboardSDK 项目,现在我想将它集成到我的主项目中,该项目已经使用 GTL 库进行 YouTube 上传,在这个新项目中,我得到了 641 个具有奇怪名称的类的重复符号.
我试过的:
我已经解决了与 GoogleAdMob 和 GoogleConversion SDK 的一些冲突。我已经解决了所有可以在项目其他地方找到相关类名的情况的冲突,例如 AFNetworking、OAuth 等。
但仍有 641 个重复符号。
duplicate symbol __ZN6google8protobuf8internal20InitLogSilencerCountEv in:
/Users/sabirali/Documents/4.2.1/libCardboardSDK.a(common.o)
duplicate symbol __ZN6google8protobuf8internal22DeleteLogSilencerCountEv in:
/Users/sabirali/Documents/4.2.1/libCardboardSDK.a(common.o)
...
...
duplicate symbol __ZN6google8protobuf2io18StringOutputStreamC1EPNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE in:
/Users/sabirali/Documents/4.2.1/libCardboardSDK.a(zero_copy_stream_impl_lite.o)
duplicate symbol __ZN6google8protobuf2io22LazyStringOutputStreamC2EPNS0_14ResultCallbackIPNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEE in:
/Users/sabirali/Documents/4.2.1/libCardboardSDK.a(zero_copy_stream_impl_lite.o)
duplicate symbol __ZN6google8protobuf2io22LazyStringOutputStreamC1EPNS0_14ResultCallbackIPNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEE in:
/Users/sabirali/Documents/4.2.1/libCardboardSDK.a(zero_copy_stream_impl_lite.o)
ld: 641 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
问题:
- 我无法完全理解这些重复符号的来源,我的猜测是它来自谷歌的 GTL SDK,但我确实需要它来上传 YouTube 并且无法删除它。例如,这个类名是
__ZN6google8protobuf8internal20InitLogSilencerCountEv
随机生成的吗? - 我如何才能准确地找出我的项目中的哪个 SDK/框架间接使用了 Cardboard SDK 正在使用的同一个谷歌库?
- 如果可能的话,我什至想使用一些编译器标志来显式地使重复的符号静音?
更新:
我发现问题不在于 YouTube API,因为我已经从我的项目中删除了该 API 和所有其他谷歌 SDK,但仍然存在冲突。
我已经检查了 SDK 中的目标文件而不是它们,它的
protobuf
库内部被 Cardboard SDK 中的一些类使用。如何找出哪个库
protobuf
作为依赖项?