我正在尝试更新ios应用程序以反应原生0.39及更多。
一切都在0.38.2下工作,但之后我遇到了ld: X duplicate symbols for architecture Y
问题。
应用程序本身是swift,obj-c,web embedding等的混合......
但是它有一个由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
或link binary with libraries
,我只能看到一个,如果我删除了libReact.a并将其放回去,问题仍然存在。
尝试清理项目,DerivedData,pods,node_modules(...)并没有取得更大的成功。
(如果它有用,我正在运行Xcode 8.2.1,Cocoapod 1.1.1,npm 4.0.5。)
感谢您的帮助,伙计们。
答案 0 :(得分:0)
我有同样的问题。该解决方案记录在https://github.com/facebook/react-native/issues/11502
中简短的回答是选择您的pod项目,选择React目标,然后选择Build phases and Compile Sources。
在那里删除CSSLayout.c和CSSNodeList.c。
尝试再次构建。在我的情况下,我仍然有错误。
回到React Compile Sources并重新添加CSSLayout.c和CSSNodeList.c。
再次建造并vo !!