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

放肆的年华 提交于 2019-12-19 09:55:12

问题


I'm getting this linker error using CocoaPods with React Native: ld: library not found for -lReact

I have followed the guide at https://facebook.github.io/react-native/docs/embedded-app-ios.html#content

I am trying to integrate with an existing iOS project, which is a JUCE C++ project. JUCE generates the Xcode project file so I believe I need to use the Cocoapods method.

The steps I'm doing are:

  • create or save iOS build from Introjucer project
  • run npm install react-native from root of project (alongside the .jucer file)
  • create Podfile in Builds/iOS as per the guide (but with ../../node_modules as the path)
  • run pod install
  • open workspace in Xcode
  • adjust GCC_PREPROCESSOR_DEFINITIONS to include $(inherited)
  • build

An example project displaying this issue is at https://github.com/adamski/juce-native-navigation/tree/react-native-cocoapods

I think there is something going on with the Introjucer generated project, as I tried the whole process on a fresh new Xcode project and it builds fine.

I have also tried adding libReact.a to the 'Link Binary With Libraries' section but that does not seem to have helped.


回答1:


I looked for differences between the Introjucer generated project and the Xcode generated one.

One significant difference was the CONFIGURATION_BUILD_DIR or "Per-configuration Build Products Path"

I copied over the setting from the Xcode generated project $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

This allowed the linking to complete and gave a successful build :)




回答2:


Go to your Project -> Your Target -> Build Phases -> Link Binary With Libraries and you might see some red entries there referring to the React library files here. Just remove those red entries and you should be good to go.

If there are no red entries, then just check that the list of libs in Link Binary With Libraries list has no items which you removed from React project using 'npm uninstall lib_name' command.




回答3:


Some steps may not be necessary and bring concerns of other, larger issues being hidden. Specifically:

adjust GCC_PREPROCESSOR_DEFINITIONS to include $(inherited)

Namely, pod install scripts are supposed to do the $(inherited) magic for you.

Could a configuration reset be of help?




回答4:


Go to your Project -> Your Target -> Build Settings -> Link Binary With Libraries and you might see some red entries there referring to the React library files here. Just remove those red entries and you should be good to go.



来源:https://stackoverflow.com/questions/34792596/juce-and-react-native-linker-error-ld-library-not-found-for-lreact

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!