RTAS / Windows Issues

Anyone have any advice for building for RTAS in Windows? On the Mac it’s very easy, but Windows has been a headache so far…

I can get plugins to compile easily (including the Juce Demo plugin) but they throw an error in Pro Tools that they are looking for various VC2005 redistributable DLLs (even though they are installed) and will not load in Pro Tools 9 in Windows 7 (32 or 64 bit, haven’t tried XP.) I’ve tried building with Visual C++ 2008 and 2010 to no avail. Building with 2005 would be trickier to do right now due to configuration issues, but it’s next on my list of things to try.

Using Juce 1.52 and PT8 SDK, doesn’t look like there’s any Win/RTAS related stuff in subsequent commits so I haven’t tried the latest tip.

Never seen any problems like that myself, but I’ve always used VC2005 for compiling RTAS - the Digidesign code is very very fragile and sensitive to the build environment, I wouldn’t trust it to build correctly in any non-Digidesign-approved version of the compiler.

I hadn’t realized that only VC2005 was approved, having only skimmed Avid’s documentation, thanks for the info. I’ll have to get a VC2005 setup going ASAP. Thanks!

The newer SDKs may indeed be ok in vc2008, I haven’t checked. But it’s all very precarious, that’s for sure.

Got a VC2005 environment going, and now I’m running into this issue:

You can use vc2008 or vc2010 to build the rtas plugin, that’s what I’m doing and it works fine (using the PT 7.3 SDK). I link with the static vc runtime to avoid these issues with the vc redistribuable DLLs.

Nice. I will try that next. Thanks! 8)

I wonder if anybody has managed to get one of the example Plugins of the Protools SDK compiled in VS 2008 or VS 2010.
I can compile the PlugInLib.lib of the SDKs 7.3, 8.1 and 9.0 in VS 2008 and VS 2010 but I’m not able to compile one of the example Plugins that come with the SDK.
Therefore I’m not able to get the SDK working with Juce.

If someone has used VS 2008 or VS 2010, could you please tell me:

  • which version of VS did you use?
  • which version of the Pro Tools SDK did you use?
  • did you change any compile settings?

Since I’ve tried every combination that came into my mind for the last two days and wasn’t able to build an example Plugin, any help is appreciated.
Thanks a lot.

VS 2008 is still the best version IMO. No problems getting the lib to compile with the RTAS 8.1 SDK. You don’t need to worry about their silly example plugins if you have Juce. If you can get the Juce example plugin to compile properly as RTAS then you’ll be able to get your Juce plugin project working as well (assuming there aren’t other issues in your code of course.)

Static VC runtime solved my issue, no need to leave VS 2008.

Thanks for your answer.

Does that mean:

  • you compiled the PluginLib.lib using static VC runtime
  • or leaving the PluginLib.lib as is and compiling the juce Plugin using the static VC runtime
  • or compiling both, the lib and the juce Plugin using the static VC runtime

Did you use Debug builds or Release builds of the Pro Tools libraries?
Which Standard libs did you exclude in the Linker Settings of VS 2008?

Thanks for your help.

[quote=“Soilworker”]VS 2008 is still the best version IMO. No problems getting the lib to compile with the RTAS 8.1 SDK. You don’t need to worry about their silly example plugins if you have Juce. If you can get the Juce example plugin to compile properly as RTAS then you’ll be able to get your Juce plugin project working as well (assuming there aren’t other issues in your code of course.)

Static VC runtime solved my issue, no need to leave VS 2008.[/quote]

Everything Soilworker said holds true for me. I just figured out my RTAS issues. I compiled the RTAS libs via VC2008 Express (which you can still download, and is free), but was unable to get the Digi example plugins to compile. I created a new example project with the latest Introjucer download (the executable, not the one I built), made sure that I generated a manifest in the build (see http://www.rawmaterialsoftware.com/viewtopic.php?f=8&t=6895 for more info), and things built. I wasn’t able to duplicate my success with VC2010 or the PT_90 SDK.

Sean Costello

I don’t know where things go wrong…
I followed your instructions:

  • compiled the PluginLib.lib of PT SDK 8.1 using VS 2008
  • created a new RTAS example Plugin using the downloaded Version of the Introjucer
  • “Generate Manifest” is set to yes under the linker options

The result when it tries to link the Plugin:

LINK : warning LNK4199: /DELAYLOAD:PluginLib.dll ignored; no imports found from PluginLib.dll LINK : warning LNK4199: /DELAYLOAD:DSPManager.dll ignored; no imports found from DSPManager.dll
And then I get a lot of errors about unresolved external symbols in PluginLib.lib

Did you change any settings when you compiled the PLuginLib.lib from the 8.1 SDK?
Did you change any settings in the automatically created Demo Project?
Are you using Release or Debug Builds of the PT SDK?

I’m totally stuck…

I didn’t have to mess with any settings for building the PluginLib, or in my Juce project. I haven’t used the IntroJucer yet (although I am planning porting my project to it very soon.)

Hello everybody !

I’m also using VS2008, and I’m kind of experiencing the same problems than you guys.

SimplePlugin (demo plugin included in the RTAS-SDK) compiles and links only in release.
By slightly tweaking the RTAS sdk, it’s possible to link a debug version of project SimplePlugin to the release version of PlugingLib.lib. This works for compilation and linking, but at runtime, ProTools refuses to load the plugin, and it is not possible to debug it.
This is behavior with RTAS sdk 8.0, 8.1 and 9.0. With old version 7.3, debug builds work fine, and it is possible to use VS2008 debugger.

When trying Introjucer’s default plugin, I run into the same problem : the release version is working fine (PS : one just has to set project properties/linker/manifest->generate manifest to yes, so that ProTools finds the CRT dlls, as we compile with /MD - Jules…), but the debug version however shows the same behavior than debug-SimplePlugin : compiles, links, but doesn’t load up in protools…
This is the behavior with RTAS sdk 8.0, 8.1 and 9.0 (i did minor adjustments to juce_RTAS code to match the tiny changes between version 8 to 9) Juce does not support version 7.3, so I didn’t test it.

Now, my feeling is that it all comes from a bug in RTAS sdk. Digidesign guys probably know about it, but I’m not sure if it is very high on their priority list.
In the meantime, can anyone think of a workaround to still get a debug build working (or sth looking like it…)

My deep problem is actually that the plugin I’m supposed to port to RTAS crashes when opened in ProTools, reading memory somewhere it isn’t allowed to. Unfortunately :

  • since it only happens with this RTAS plugin, and not trivial JUCE-generated RTAS, I suspect the bug is in my code.
  • since I’ve only got a release build of the plugin, I can’t see what happens inside this opaque binary.
  • since the bug doesn’t occur in the VST version, I suspect it is kind of a tricky one to find, so a debugger would really be helpful !

Thank you in advance for any idea…


I never managed to get a debug build for RTAS windows working and I wonder if anyone did so.

Then, maybe, any idea what code would crash in RTAS and work real fine in VST ?

Memory leak would crash on RTAS but more forgiving in VST. You may use Protools developer version to debug it.

Is there any news on this? I am having the same issues with VS 2010 and PT SDK 8.1 on Windows.

I can seem to be able to successfully compile the Release build of PluginLib.lib, but it does not link with my Introjucer-generated plugin project. I followed Jule’s hints and set the __stdcall convention for juce_RTAS_Wrapper.cpp, and 3x juce_RTAS_DigiCode?.cpp, which reduced the number of unresolved symbols by a few, but there are still 97 unresolved symbols remaining. The majority are from PluginLib.lib(CAdaptorPlugIn.obj), with only 2 from CDSPProcessGoup.obj and CDSPProcessType.obj respectively, also in that lib.

Sounds like a very focussed issue, but I can’t figure out how to fix it. If I understand correctly, some of you managed to get a Release build done, and I wonder how you achieved that.

What am I missing? Any idea?

P.S: I should mention that I also can’t get the SimplePlugin example to compile (319 unresolved symbols).

Battling some new linker errors with the PT80SDK and the latest Juce tip in VS2008. I think I’ve almost got it figured out… I will post a step by step here in a few minutes…

Alright, got it all working in my latest build, using PT80SDK and the latest Juce tip in VS2008, Windows 7 Ultimate 64 bit on a Mac Pro using Boot Camp.

Here are the steps I used to get it working:

[]Compile the Release build of PluginLib.lib[/]
[]Create a new plugin project with Introjucer, drag in your various source code files for your project, and make sure the only checked plugin format is RTAS (you can forget about going polymorphic on a Windows RTAS build, trust me!) Make sure you get your VS2008 paths set correctly, I prefer to use absolute paths and I keep all my SDKs in C:\SDKs\ for ease of access.[/]
[]Follow Jules’ instructions: set the __stdcall method on the DigiCode and RTAS Wrapper files in your project.[/]
[]Make sure to put the following lines in Linker–>Input–>Ignore Specific Library: msvcrt.lib; MSVCPRT.LIB; MSVCPRTD.LIB[/]
[]Build, and it should work. Make sure to copy both the .dpm and .dpm.rsr files into your RTAS plugins folder so they will show up.[/][/list]

PS - Don’t worry about the SimplePlugin project from Avid. They included that simply to mock, frustrate, and torment developers. :slight_smile: