JUCE和React Native – 链接器错误“ld:找不到-lReact的库”

我得到这个链接器错误使用CocoaPods与React本土: 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项目创build或保存iOS版本
  • 从项目的根目录运行npm install react-native (与.jucer文件一起)
  • 根据指南在Builds/iOS创buildPodfile(但以../../node_modules作为path)
  • 运行pod install
  • 在Xcode中打开工作区
  • 调整GCC_PREPROCESSOR_DEFINITIONS以包含$(inherited)
  • build立

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

我认为Introjucer生成的项目正在进行中,因为我在全新的Xcode项目上尝试了整个过程,并且它的构build正常。

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

转到您的项目 – >您的目标 – >生成设置 – >链接二进制库和库,你可能会看到一些红色的条目在这里指的是反应库文件。 只要删除这些红色的条目,你应该很好去。

有些步骤可能不是必要的,而且还会隐藏其他更大的问题。 特别:

 adjust GCC_PREPROCESSOR_DEFINITIONS to include $(inherited) 

也就是说, pod install脚本应该为您执行$(inherited)魔法。

重置configuration可以帮助吗?

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

一个显着的区别是CONFIGURATION_BUILD_DIR或“Per-configuration Build Products Path”

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

这使得链接完成,并给了一个成功的build设:)

转到您的项目 – >您的目标 – > 构build阶段 – >链接二进制与图书馆,你可能会看到一些红色的条目在这里指的是反应库文件。 只要删除这些红色的条目,你应该很好去。

如果没有红色条目,那么只需检查“链接二进制库”列表中的库列表中是否没有使用“npm uninstall lib_name”命令从React项目中删除的项目。