JUCE 和 React Native - 链接器错误“ld: library not found for -lReact”
Posted
技术标签:
【中文标题】JUCE 和 React Native - 链接器错误“ld: library not found for -lReact”【英文标题】:JUCE and React Native - linker error "ld: library not found for -lReact" 【发布时间】:2016-01-14 14:55:45 【问题描述】:我在使用带有 React Native 的 CocoaPods 时遇到此链接器错误:
ld: library not found for -lReact
我已按照https://facebook.github.io/react-native/docs/embedded-app-ios.html#content 的指南进行操作
我正在尝试与现有的 iOS 项目集成,这是一个 JUCE C++ 项目。 JUCE 生成 Xcode 项目文件,所以我相信我需要使用 Cocoapods 方法。
我正在做的步骤是:
从 Introjucer 项目创建或保存 iOS 版本 从项目根目录运行npm install react-native
(与.jucer
文件一起)
按照指南在Builds/iOS
中创建Podfile(但以../../node_modules
作为路径)
运行pod install
在 Xcode 中打开工作区
调整GCC_PREPROCESSOR_DEFINITIONS
以包含$(inherited)
构建
显示此问题的示例项目位于 https://github.com/adamski/juce-native-navigation/tree/react-native-cocoapods
我认为 Introjucer 生成的项目发生了一些问题,因为我在一个全新的 Xcode 项目上尝试了整个过程,并且构建良好。
我还尝试将 libReact.a
添加到“使用库链接二进制文件”部分,但这似乎没有帮助。
【问题讨论】:
你有没有运行过pod init
,创建了一个podfile,运行过pod install
等等?
是的,我按照上面链接的指南做了所有这些事情
@SwiftArchitect 我已经详细说明了所采取的步骤以及上面链接的示例项目。
【参考方案1】:
我查找了 Introjucer 生成的项目和 Xcode 生成的项目之间的差异。
一个显着的区别是CONFIGURATION_BUILD_DIR
或“按配置构建产品路径”
我从 Xcode 生成的项目中复制了设置
$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
这允许链接完成并成功构建:)
【讨论】:
我也有同样的问题,但这个包没有……我很好奇你能不能描述一下你把$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
复制到哪里了?
@ewizard 在二进制位置
你的意思是在build settings -> per configuration Build Products Path
,如果是这样我已经说过:(
实际上我认为它可能正在寻找一个 react pod 而不是在我的 node_modules/react-native 文件夹中,因为我搜索 CONFIGURATION_BUILD_DIR 并且我在 React.xcconfig
文件中看到了很多 $PODS_CONFIGURATION_BUILD_DIR/React - 我应该将其更改为指向 node_modules 文件夹吗?【参考方案2】:
转到您的项目 -> 您的目标 -> 构建阶段 -> 将二进制文件与库链接,您可能会在此处看到一些涉及 React 库文件的红色条目。只需删除那些红色条目,您就可以开始了。
如果没有红色条目,那么只需检查 Link Binary With Libraries 列表中的库列表是否没有您使用“npm uninstall lib_name”命令从 React 项目中删除的项目。
【讨论】:
【参考方案3】:某些步骤可能不是必需的,并且会引起对隐藏的其他更大问题的担忧。具体来说:
adjust GCC_PREPROCESSOR_DEFINITIONS to include $(inherited)
也就是说,pod install
脚本应该为您执行 $(inherited)
魔法。
configuration reset 有帮助吗?
【讨论】:
谢谢,我按照建议,从生成的工作区中删除配置(原始项目没有设置)。我仍然收到链接器错误。 另外添加该步骤确实消除了有关GCC_PREPROCESSOR_DEFINITIONS
的警告【参考方案4】:
转到您的项目 -> 您的目标 -> 构建设置 -> 将二进制文件与库链接,您可能会在此处看到一些涉及 React 库文件的红色条目。只需删除那些红色条目,您就可以开始了。
【讨论】:
从我的 react-native 项目中删除了一些第三方库并在 Xcode 中进行了干净的重建后,我收到了这个错误。删除这些条目以及相关的库解决了这个问题。以上是关于JUCE 和 React Native - 链接器错误“ld: library not found for -lReact”的主要内容,如果未能解决你的问题,请参考以下文章
React Native 构建版本:链接器命令失败,退出代码为 1
如何从 React Native Picker 获取值和标签名称?