Undefined symbols for architecture x86_64 when compiling Vidal's 64-bit macoslib

  1. 3 months ago

    Isaac R

    Feb 9 Pre-Release Testers, Xojo Pro Minnesota, USA

    I am trying to compile Vidal's 64-bit MacOSLib branch and I get a Linking Executable error from Xojo 2018r4.

    Linking Executable
    Undefined symbols for architecture x86_64:
    
    "__NSGetThemeImage", referenced from:
    _MenuItemWindowMenu.HandleWindowMiniaturize%%o<MenuItemWindowMenu>o<Cocoa.NotificationObserver>o<Cocoa.NSNotification> in MenuItemWindowMenu.o
    ld: symbol(s) not found for architecture x86_64
  2. Isaac R

    Feb 9 Pre-Release Testers, Xojo Pro Minnesota, USA

    Created a Feedback Case: Feedback Case #54890

  3. Christian S

    Feb 9 Pre-Release Testers, Xojo Pro, XDC Speakers Germany

    You could remove that symbol from the code...

  4. Isaac R

    Feb 10 Pre-Release Testers, Xojo Pro Minnesota, USA
    Edited 3 months ago

    The symbol __NSGetThemeImage does not occur in the code. There is a "_NSGetThemeImage" declare (which is not the same thing), which appears to be a deprecated / private API anyway so perhaps removing this will help. That said, the IDE specifically requests copying the error message into a feedback case when this error occurs. At any rate it's not a great error message, and I would hope for it to be improved (perhaps highlight the invalid declare rather than just stopping the linking process with a message you can only see by copy/pasting into an external text editor).

  5. Isaac R

    Feb 10 Pre-Release Testers, Xojo Pro Minnesota, USA

    Indeed that was the culprit, thanks Christian for the nudge in the right direction.

  6. Greg O

    Feb 10 Xojo Inc
    Edited 3 months ago

    @Isaac R There is a "_NSGetThemeImage" declare (which is not the same thing), which appears to be a deprecated / private API anyway so perhaps removing this will help.

    That’s your hint right there (It is the same thing btw).

    Wrap the code for that method in an

    #if false 
    ...
    #endif

    block and try again.

or Sign Up to reply!