Duplicate symbols building JUCE graphics module — manual Xcode project, no Projucer

Hi all,

I’m building a JUCE app with a manual Xcode project (no Projucer) and hitting 2208 duplicate symbol errors at link time, all originating from SheenBidi.

Setup:

  • macOS 26.0.1

  • Xcode 26.2

  • JUCE: latest stable

  • Manual Xcode project, no Projucer

What’s happening:

The build fails at link with 2208 duplicate symbols. The error line in the build log is:

Link SCREE_BROOD (arm64) — ✗ 2208 duplicate symbols

The compile step above it shows include_juce_graphics_Sheenbidi.c compiling successfully (0.2s, 1 warning).

What I tried:

The original file was include_juce_graphics_Sheenbidi.mm. I was getting void* cast errors because C++ is stricter than C about these. The suggested fix was to rename it to .cso it compiles as plain C rather than Objective-C++. The cast errors went away but now I get the duplicate symbols.

My suspicion is that another amalgam file (possibly include_juce_graphics.mm) is also including SheenBidi source internally, so the symbols are being defined twice. But I don’t want to start hacking amalgam files without knowing what I’m doing.

What’s the correct way to handle SheenBidi in a manual Xcode project?

Thanks

In a JUCE project generated by the Projucer it will be include_juce_graphics_Sheenbidi.c not include_juce_graphics_Sheenbidi.mm. Is there a good reason to be building via a manual Xcode project rather than one configured by either the Projucer or CMake? Even if you must do it manually it might be worth generating a project at least for comparison purposes. It will be very hard for anyone to give much support on here as the vast majority will not be doing this, and it isn’t supported.