Link error building release iOS

Hi, getting this link error when building release version of iOS app. Debug is fine, as are MacOS. Any ideas? thx

Have you tried disabling Link-Time Optimisation? (see Compile standalone Linux, undefined references to juce::<many_things> for a similar issue)

1 Like

thx for the suggestion - giving it a go now!

Same error, albeit no longer from the lto module:

I can’t reproduce this. Can you try the JUCE ‘audio plugin demo’ project? It builds fine in release on my machine with LTO enabled and disabled.

Hi, managed to reproduce it on the demo project by setting compiler to latest so I can use C++17 features - must be what triggered the error in my own project. Debug builds fine, release has the error.

The compiler knows about those functions (and wants to use them in an optimised build), but the iOS version of libc++ lacks them. I’m not sure what the best approach is…

Surely that would affect debug too?

Is the result of this that we can’t use C++17 for iOS?

It appears that with optimisations enabled the compiler is attempting to use certain aligned versions of new and delete which are not present in the accompanying c++ library.

You’ll need to set the deployment target to iOS 11.0

can’t do that really - lots of my users still use older tablets that stop at 9.3. Preferable to remove all C++17 code than to update the supported version of iOS. Before that though I might try turning off the optimiser for release builds. It’s a shame the appstore won’t allow different builds for different iOS versions.

Turning off the optimiser and LTO has no effect - have to actually enable debug build in order to get a successful build.

Do you think I should raise an issue with Apple for this?

Possibly. I did a brief search of the web and I didn’t find anything concrete about C++17 support on specific versions of iOS.

1 Like

I raised an issue a few hours back - will update when I get a response, hopefully some time in 2018 :wink: