JUCE 和 React Native - 链接器错误 "ld: library not found for -lReact"

JUCE and React Native - linker error "ld: library not found for -lReact"

我将 CocoaPods 与 React Native 结合使用时遇到此链接器错误: ld: library not found for -lReact

我已按照 https://facebook.github.io/react-native/docs/embedded-app-ios.html#content

中的指南进行操作

我正在尝试与现有的 iOS 项目集成,这是一个 JUCE C++ 项目。 JUCE 生成 Xcode 项目文件所以我相信我需要使用 Cocoapods 方法。

我正在做的步骤是:

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

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

我也曾尝试将 libReact.a 添加到 'Link Binary With Libraries' 部分,但这似乎没有帮助。

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

adjust GCC_PREPROCESSOR_DEFINITIONS to include $(inherited)

也就是说,pod install 脚本应该为您施展 $(inherited) 魔力。

configuration reset 有帮助吗?

我查找了 Introjucer 生成的项目与 Xcode 生成的项目之间的差异。

一个显着差异是 CONFIGURATION_BUILD_DIR 或 "Per-configuration Build Products Path"

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

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

转到您的项目 -> 您的目标 -> 构建设置 -> Link Binary With Libraries,您可能会在此处看到一些红色条目,这些条目指的是此处的 React 库文件。只需删除那些红色条目即可。

转到你的项目 -> 你的目标 -> Build Phases -> Link Binary With Libraries,你可能会看到一些红色的条目,指的是 React 库文件在这里。只需删除那些红色条目即可。

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