我正在尝试将 ios 应用程序更新为 react-native 0.39 及更高版本。一切都在 0.38.2 工作,但在那之后我遇到了ld: X duplicate symbols for architecture Y
问题。该应用程序本身是 swift、obj-c、网络嵌入等的混合体......
但它有一个由 swift 和 react-native 组成的共享扩展。
npm 和 pod 安装似乎没有问题。
经过一番研究,我找到了问题的原因,并尝试了一堆解决方案,但我仍然没有成功解决这个问题:
[...|similar duplicate symbol _CSSNodeList{something}]
duplicate symbol _CSSNodeListFree in:
~/Library/Developer/Xcode/DerivedData/....../Build/Products/Debug-iphonesimulator/React/libReact.a(CSSNodeList-10ACA1A52987016B.o)
~/Library/Developer/Xcode/DerivedData/....../Build/Products/Debug-iphonesimulator/React/libReact.a(CSSNodeList-5089F60B494D1C9C.o)
duplicate symbol _CSSNodeListAdd in:
~/Library/Developer/Xcode/DerivedData/....../Build/Products/Debug-iphonesimulator/React/libReact.a(CSSNodeList-10ACA1A52987016B.o)
~/Library/Developer/Xcode/DerivedData/....../Build/Products/Debug-iphonesimulator/React/libReact.a(CSSNodeList-5089F60B494D1C9C.o)
ld: 103 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
据我所知,我的共享扩展中的某处至少有 2 个对 CSSNodeList 的引用(并且可能在其他反应对象上)。但是看linked frameworks and libraries
or link binary with libraries
,我只能看到一个,如果我删除 libReact.a 并将其放回去,问题仍然存在。
试图清理项目、DerivedData、pods、node_modules (...) 但没有更多成功。
(如果有帮助,我正在运行 Xcode 8.2.1、Cocoapod 1.1.1、npm 4.0.5。)
谢谢你们的帮助,伙计们。