问题
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