Mac Plugins built with SDK 10.7 fail to load on Mac 10.6

Hi everybody,

First of all, I noticed there were several other posts about Audio plugins and Mac OSX issues on the forum but I think my problem is slighty different so I thought it was best to open a new thread.

My company recently shipped two plugins available as VST/AU/RTAS on both win32 and macosx. The first release was using the old Juce 1.53 framework, I always compiled by choosing Mac SDK 10.7 in Xcode (anyway the IntroJucer would select it by default) and when I tested on a Mac 10.6, it worked just fine.

Recently I switched to Juce 2.0 (and even most recent, I regularly check updates on the git repository), because there were too many issues with RTAS and updating to the latest Juce framework just solved everything. But now, every project I build with Mac SDK 10.7 just fails to load on older Mac versions (I’m still testing on a 10.6 Mac). Several clients reported that when they got our latest update (which is built with Juce 2.0) on their Mac 10.6, the VST/AU/RTAS would not load.

I already solved the issue for VST and RTAS by just building everythind with Mac SDK 10.5, and it now works perfectly on Mac 10.6.
Nevertheless I’m not able to solve the problem for AU, as I encounter several compiling errors (I saw on another thread that the JUCE AU Wrapper would not compile on a older version than 10.7 if I’m correct?) and I’m not able to build AUs with 10.5 SDK at all.

What I don’t understand is: why did it work with previous Juce version 1.53 where a 10.7-plugin build would work on a 10.6 Mac, and now it doesn’t work anymore with Juce 2.0 ? If the latest Mac SDK is supposed to handle backward compatibility, isn’t it that something is broken with the latest Juce version?

I would greatly appreciate some help there… as I don’t really know what to do, except having to handle two versions of my projects, one with Juce 1.53 for AU and another with Juce 2.0 for VST and RTAS, which wouldn’t make any sense at all…

Anyway, have a great day guys!

Vincent Dortel
Developer @AudioGaming

if you have compiler errors, please post them. If you say plugins don’t work, do they crash or freeze or do you get an empty window etc., do you have a callstack etc…, which Xcode Version, which base/target sdk settings/ that would be helpful to know.
I’m currently compiling my Plugins with XCode 3.2.6 - OSX 10.6.8 AU=BaseSDK 10.5 VST=BaseSDK 10.6 TargetSDK always 10.5, and it seems to work nice on all plattform i tested so far.

So here are more details:

when I’m trying to compile AU with the 10.5 SDK, I’m getting the following compile errors:
In ComponentBase.h: several errors of this kind: " Semantic Issue - Unknown type name ‘AudioComponentPlugInInterface’ "
or " Use of undeclared identifier ‘kAudio_MemFullError’ "
In AUPlugInDispatch.h, Unknown type name 'AudioComponentMethod’
In AUBase.h, " Use of undeclared identifier ‘kAudio_UnimplementedError’ "

That seems to be the only errors. I think this comes from the fact that the IntroJucer is still putting the new CoreAudio headers (located in Developer/Extras/CoreAudio) and .cpp files in the project and there must be some conflicts with the old CoreAudio 10.5 SDK. Should I remove every reference to the newest SDK and put back the files of CoreAudio 10.5? What I find strange is that there are much less files in the 10.5 CoreAudio folder - /MacOSX10.5.sdk/System/Library/Frameworks/ - than in the newest /Developer/Extras/CoreAudio/ folder… I must admit I’m not sure which files I should add to the project…

And about the other things I was talking about, by “plugins don’t work on 10.6 when built with 10.7 SDK” (for VST and RTAS), I meant the projects would compile but the plugs wouldn’t appear in the hosts. For Pro Tools, after scanning the plugs it would say something strange like “couldn’t find ilok authorization for the following plugins, do you want to move them to the unused plugins folder” whereas we are not using Ilok control at all (and of course after compiling with 10.5 SDK the plugs would load just fine, the GUI and sound OK as well). On Reaper for example, the VSTs or AUs would fail to load, with a message like “couldn’t load the following plugs” when trying to select them in the FX window.

About other things, I’m currently using Xcode 4.3.2 on a MacMini 10.7.3 Lion. I use the latest IntroJucer to generate my projects and the only modification I added after the project was generated was to switch Base SDK from 10.7 to 10.5. Target SDK is the same as base SDK.
Also, the current project is generating both VST and AU in the same .component (that works quite well for me) and RTAS has another IntroJucer project on its own, with the exact same options but separated from VST and AU (as having only one output file for the 3 plugin kinds would not work very well in my experience)

Thanks for your time!

Thank you very much Jules. My apologies, I was sure I searched everywhere on the forum and I missed this one thread.

That do not explain why backward compatibility worked with 10.7 builds on old Juce 1.53 and not on Juce 2.0 but well, copying the old Mac CoreAudio files just fixed my problem, now my AU compiles with the 10.5 SDK and I can use it on a mac 10.6 so that works for me :wink:

Thanks again. Cheers

Hello fellow Jucers!
I think I have a similar problem. I use XCode 7.3.1. I managed to get the old SDKs for OSX 10.5 and 10.6 and at this point I can choose them as base SDKs and deployment target. So when I’m trying to compile, I get countless errors such as “Unknown type name ‘AudioComponentPlugInInterface’” or “Unknown type name ‘AudioComponentMethod’” and so on. I have no idea what I can do to make it work. I’m trying to follow this tutorial
It’d be nice if someone could help me out, since I’m most probably too dumb to figure out what I’m doing wrong.

Why on earth would you use the older SDKs? as long as you set the deployment target to 10.6 you’re good to go with latest SDK within the Xcode.

That’s not true. If you set the deplyment target to 10.6, you can execute your binaries on 10.6. but you are you’ve got to make sure you are not using any functions that are not included in the 10.6 runtime, otherwise your app is going to crash. If you use the 10.6 sdk instead you’ll get linker errors when you do so.

Sounds a bit like you’re trying to compile AU 3, which is not supported in 10.6. You might wanna turn AU 3 of in the Projucer.

No unfortunately not. I only ticked “Build AudioUnit”. I managed to compile the Juce Demo Plugin and Logic accepts it. The next thing I’m trying to do is to get my plugin going in Logic. I’ll try to adapt the settings. Thanks for your time and effort!