google protobuf库中的CardboardSDK冲突(重复符号)

时间:2016-08-02 08:46:20

标签: ios dependency-management google-cardboard protocol-buffers google-vr

我已经在测试项目中成功集成和配置了我的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)

问题:

  1. 我无法完全理解这些重复符号的来源,我的计算猜测是来自谷歌的GTL SDK,但我确实需要用于YouTube上传而无法将其删除。例如这个类名__ZN6google8protobuf8internal20InitLogSilencerCountEv是随机生成的吗?
  2. 如何确切地找出我项目中哪个SDK / Framework间接使用Cardboard SDK使用的相同Google库?
  3. 如果可能,我甚至想使用一些编译器标志明确地使重复符号静音?
  4. 更新

    1. 我发现问题不在于YouTube API,因为我已从我的项目中移除了该API和所有其他Google SDK,但仍然存在冲突。

    2. 我已经检查了SDK中的目标文件,而不是它们,其内部的protobuf库正在被Cardboard SDK中的一些内部使用。

    3. 如何找出哪个库具有protobuf作为依赖?

0 个答案:

没有答案