Link error iOS 10 Sierra


#1

Hi,

I’m trying to compile a (very slightly modified) version of the midiTest application for iOS, but am receiving the following link error in Xcode:

Undefined symbols for architecture armv7: "_OBJC_CLASS_$_CABTMIDICentralViewController", referenced from: objc-class-ref in juce_audio_utils.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

The project compiles and runs fine in the iOS simulator, but the above occurs when compiling for a physical iOS device.

I’m running OSX sierra, with Xcode 8, trying to build for iOS 10.0.0.1.

Also worth noting that there are a number of compiler warnings relating to the juce library code itself such as the following:

Undeclared selector: '_updateMouseoverWithFakeEvent'

Unsure if these issues are related, but I don’t believe they are.

Any thoughts would be greatly appreciated


#2

Hi,

1 - are you including CoreAudioKit framework?
2 - the warning is generated by the method (in juce_mac_WebBrowserComponent):

    void mouseMove (const MouseEvent&)
    {
        // WebKit doesn't capture mouse-moves itself, so it seems the only way to make
        // them work is to push them via this non-public method..
        if ([webView respondsToSelector: @selector (_updateMouseoverWithFakeEvent)])
            [webView performSelector:    @selector (_updateMouseoverWithFakeEvent)];
    }

You could avoid the warning changing the method:

    void mouseMove (const MouseEvent&)
    {
        // WebKit doesn't capture mouse-moves itself, so it seems the only way to make
        // them work is to push them via this non-public method..
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
#endif  // defined(__clang__)

        if ([webView respondsToSelector: @selector (_updateMouseoverWithFakeEvent)])
            [webView performSelector:    @selector (_updateMouseoverWithFakeEvent)];

#if defined(__clang__)
#pragma clang diagnostic pop
#endif  // defined(__clang__)
    }