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

Xcode 链接器命令失败 - 找不到目录

React-Native 图像查看器?

如何从 React Native Picker 获取值和标签名称?

markdown React Native和FIrebase动态链接

如何在 React Native 中单独显示日期时间选择器?