4

我在使用带有 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文件一起)
  • 根据指南创建 Podfile Builds/iOS(但使用../../node_modules路径)
  • pod install
  • 在 Xcode 中打开工作区
  • 调整GCC_PREPROCESSOR_DEFINITIONS以包括$(inherited)
  • 建造

显示此问题的示例项目位于https://github.com/adamski/juce-native-navigation/tree/react-native-cocoapods

我认为 Introjucer 生成的项目发生了一些事情,因为我在一个全新的 Xcode 项目上尝试了整个过程并且它构建得很好。

我也尝试添加libReact.a到“使用库链接二进制文件”部分,但这似乎没有帮助。

4

4 回答 4

4

我寻找了 Introjucer 生成的项目和 Xcode 生成的项目之间的差异。

一个显着的区别是CONFIGURATION_BUILD_DIR“按配置构建产品路径”

我从 Xcode 生成的项目中复制了设置 $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

这允许链接完成并成功构建:)

于 2016-01-16T21:55:41.347 回答
4

转到您的项目 -> 您的目标 ->构建阶段-> 将二进制文件与库链接,您可能会在此处看到一些红色条目,这些条目指的是此处的 React 库文件。只需删除那些红色条目,您就可以开始了。

如果没有红色条目,则只需检查 Link Binary With Libraries 列表中的库列表是否没有您使用“npm uninstall lib_name”命令从 React 项目中删除的项目。

于 2017-10-05T07:04:07.163 回答
1

有些步骤可能不是必需的,并且会引起对隐藏的其他更大问题的担忧。具体来说:

adjust GCC_PREPROCESSOR_DEFINITIONS to include $(inherited)

也就是说,pod install脚本应该$(inherited)为您发挥作用。

配置重置会有所帮助吗?

于 2016-01-15T19:01:37.690 回答
0

转到您的项目 -> 您的目标 -> 构建设置 -> 将二进制文件与库链接,您可能会在此处看到一些红色条目,这些条目指的是 React 库文件。只需删除那些红色条目,您就可以开始了。

于 2016-01-19T09:12:09.583 回答