3

我正在尝试将 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 librariesor link binary with libraries,我只能看到一个,如果我删除 libReact.a 并将其放回去,问题仍然存在。

试图清理项目、DerivedData、pods、node_modules (...) 但没有更多成功。

(如果有帮助,我正在运行 Xcode 8.2.1、Cocoapod 1.1.1、npm 4.0.5。)

谢谢你们的帮助,伙计们。

4

1 回答 1

0

我遇到过同样的问题。该解决方案记录在https://github.com/facebook/react-native/issues/11502

简短的回答是选择您的 pod 项目,选择 React 目标,然后选择 Build Phases 和 Compile Sources。

在那里删除 CSSLayout.c 和 CSSNodeList.c 。

尝试再次构建。就我而言,我仍然有错误。

所以回到 React Compile Sources 并重新添加 CSSLayout.c 和 CSSNodeList.c。

再次构建,瞧!

于 2017-01-16T15:26:37.937 回答