【问题标题】:Duplicate symbols error when upgrading react-native to 0.39.0 and above将 react-native 升级到 0.39.0 及更高版本时出现重复符号错误
【发布时间】:2023-04-07 23:33:01
【问题描述】:

我正在尝试将 ios 应用程序更新为 react-native 0.39 及更高版本。 一切都在 0.38.2 工作,但在那之后我遇到了ld: X duplicate symbols for architecture Y 问题。 该应用程序本身是 swift、obj-c、Web 嵌入等的混合体......

但它有一个由 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 librarieslink binary with libraries,我只能看到一个,如果我将libReact.a 删除并放回去,问题仍然存在。

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

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

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

【问题讨论】:

    标签: ios react-native react-native-ios cocoapods-1.1.1


    【解决方案1】:

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

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

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

    尝试重新构建。就我而言,我仍然有错误。

    所以回到 React 编译源并重新添加 CSSLayout.c 和 CSSNodeList.c。

    再次构建,瞧!!

    【讨论】:

    • 谢谢 mloigeret,就是这样。 :)
    猜你喜欢
    • 2022-01-03
    • 2018-09-07
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多