JUCE和React Native - 链接器错误" ld:找不到-lReact"

时间:2016-01-14 14:55:46

标签: ios cocoapods react-native juce

我使用CactPods和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方法。

我正在做的步骤是:

  • 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添加到' Link Binary With Libraries'部分,但似乎没有帮助。

4 个答案:

答案 0 :(得分:4)

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

一个显着差异是CONFIGURATION_BUILD_DIR或“按配置构建产品路径”

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

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

答案 1 :(得分:2)

转到您的项目 - >你的目标 - > 构建阶段 - > Link Binary With Libraries,你可能会看到一些红色条目,这里引用了React库文件。只需删除那些红色条目就可以了。

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

答案 2 :(得分:1)

某些步骤可能没有必要,并且会隐藏其他更大问题。具体做法是:

adjust GCC_PREPROCESSOR_DEFINITIONS to include $(inherited)

即,pod install脚本应该为你做$(inherited)魔法。

configuration reset可以提供帮助吗?

答案 3 :(得分:1)

转到您的项目 - >你的目标 - >构建设置 - > Link Binary With Libraries,你可能会看到一些红色条目,这里引用了React库文件。只需删除那些红色条目就可以了。