I recently upgraded from 7.0.9 to 8.0.1 and have noticed a few unwanted things on Windows that appear to be related to linking to the debug versions of the Microsoft libraries.
My .projucer files are identical, just the build artifacts from VisualStudio are different.
I always use the Debug build configuration so I get .pdb files for my application but I do not want or need to use the runtime debug libraries.
When using Juce 8, the binaries are about 30% larger than they are in 7, and when running under VisualStudio there is an annoying delay while it locates and loads the .pdb files for the runtime libraries.
I didn’t notice any obvious differences in the generated .vcxproj files, the PreprocessorDefinitions look mostly the same except for a few things related to the Projucer version and the splash screen.
Is there a way to make it stop linking with the Microsoft debug runtime?
Update, I don’t think it’s the debug runtime libraries. It’s something else. What prompted this is when VS starts it takes about 10 seconds in a little popup that says “Loading symbols for…” and the names of various Microsoft libraries, before my app starts. That’s the issue I’d like to avoid. Again the .projucer files and the source files are exactly the same, pulled from the source management system. The only difference is in one the VS projects are generated by 7.0.9 and the other 8.0.1. I don’t do any ad-hoc changes to VS settings beyond what Projucer leaves in the solution files. I also notice that there are quite a few more “Loaded” and “Unloaded”…foo.dll messages in the VS output pane.
Just wanted to say I have the same problem! The “Loading symbols for…” can take much longer for me than 10 seconds. Once it has loaded everything, from then on every recompile is smooth, it’s just the first load that takes very long.
When I’ve had this problem with Visual Studio in the past, the solution for me was to cache symbols locally. It’s likely hitting a symbols server and downloading the needed symbols every time.
I don’t think it’s the symbol cache. I’ve got two Windows machines, one using Juce 7 and one Juce 8. Identical .projucer and source files. In VS both show the symbol servers turned off, there is a symbol cache directory and “Enable just my code” option is on. I don’t touch the VS project files, just the ones Projucer generates, but the symbol cache settings appear to be the same.
On the Juce 7 machine, the app finishes starting in about 2 seconds. on the Juce 8 machine it’s closer to 15. A little popup window appears with “Loading symbols for…” and file names pass by quickly but there are a number of them and they all seem to be related to Microsoft libraries. I’m using static linking on both machines.
For the slow machine, I keep both versions of Juce installed. Launch Projucer 7, change the global paths back, and it’s fast again.
It’s a guess but Juce 8 appears to have a lot more Windows dependencies than 7 for new features I’m not using, and something in there is triggering symbol loading. I also see a much larger number of load/unloading system library messages in the VS output panel. Because I’m static linking for easier deployment, this also seems to be making the binaries about 30% larger.
Regarding cycle440’s comment, that DOES feel like the symbol cache, but I don’t believe that is the case here. The overhead is constant for every run.
From the Tools menu, select Options, then either search for “symbols” or open Debugging/Symbols from the list on the left. Select “Load only specified modules”.