将 react-native 升级到 0.39.0 及更高版本时出现重复符号错误
Duplicate symbols error when upgrading react-native to 0.39.0 and above
我正在尝试将 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 的引用(可能还有其他 React 对象)。但是查看 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。)
谢谢你们的帮助,伙计们。
我遇到了同样的问题。解决方案记录在 https://github.com/facebook/react-native/issues/11502
简短的回答是 select 您的 pod 项目,select React 目标,然后 select 构建阶段和编译源代码。
在那里删除 CSSLayout.c 和 CSSNodeList.c 。
尝试重新构建。就我而言,我仍然有错误。
所以回到 React 编译源和 re-add CSSLayout.c 和 CSSNodeList.c。
再次构建,瞧!!
我正在尝试将 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 的引用(可能还有其他 React 对象)。但是查看 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。)
谢谢你们的帮助,伙计们。
我遇到了同样的问题。解决方案记录在 https://github.com/facebook/react-native/issues/11502
简短的回答是 select 您的 pod 项目,select React 目标,然后 select 构建阶段和编译源代码。
在那里删除 CSSLayout.c 和 CSSNodeList.c 。
尝试重新构建。就我而言,我仍然有错误。
所以回到 React 编译源和 re-add CSSLayout.c 和 CSSNodeList.c。
再次构建,瞧!!