Problems compiling latest Juce lib on Windows


just a heads up.

Visual Studio is complaining about the imapi.h file (“Cannot open include file”) with the latest SVN of Juce. I noticed that -trunk/build/win32/platform_specific_code/juce_win32_AudioCDReader.cpp
has been updated to include this file. Also my old Windows dev machine is complaining about it too now.

Is that located in “c:\Program Files\Microsoft SDKs\Windows\v6.0\Include”

When I explicitly include the file I get about 30 Errors in “c:\program files\microsoft sdks\windows\v6.0\include\ocidl.h”.


Use the lastest Platform SDK.



Intalling latest now.


I was having the same issue, and after installing the latest SDK (version 6.1, for Windows Server 2008), I have multiple compiler issues with the intrin.h. I’m now downloading SP1 for Visual Studio (professional edition), but I don’t know if that will fix it. Is there anything else that could be wrong?

With 1.45, I didn’t have to do anything with my VS configuration to do a build.


That is not a problem with JUCE; that’s a conflict between Visual Studio header files and the SDK header files.

It is easy to fix; you just need to edit the header file so that the declarations are the same as in the other header file with the conflicting declarations. If I remember right, you just need to add the volatile keyword in a few places.



[i]There are 2 conflicting declarations of _interlockedbittestandset.

In intrin.h the first argument is long *
In WinNT.h the first argument is long volatile *

I’m not sure which declaration is correct but my solution was to edit
intrin.h and add the volatile keyword.[/i]

I did just that, and it worked.


by the way, move to vC2005. It’s free.
VC6 is way too old.


I am on Visual Studio 2005.
Does the fix above make sense?



I just switched to VC++ 2008, and that seemed to fix whatever problems I was having. Can’t be arsed to try to fix it in 2005.


Humm I didn’t had any issue, but I’m using the Microsoft Platform SDK for Windows Server 2003 R2.

Your fix looks good though.


Yes with the older SDK VS2005 works fine. Platform SDK 6.0 and above breaks 2005 for some reason, on all my machines. VC++ 2008 Express also works. When time comes Ill get the new Visual Studio…