Introjucer crash on Windows 8.1 vc2012 express


#1

Hi, I'm new to JUCE and is in the process of evaluating whether it is suitable for my project:
1. I compile and run Introjucer using VC2012 express edition in Windows 8.1, but it crashes (access violation error) when I attempt to remove unused modules from the project, is this a known issue?

2. Is it very difficult to setup JUCE without Introjucer? I can't seem to find any tutorial regarding how to setup JUCE without Introjucer.

3. I'm intending to use JUCE to create a OpenGL based Game Editor, but I remember seeing a topic in the forum mention that JUCE is having issue with OpenGL in multi-windows application (unable to handle overlapping windows with OpenGL), have the issue been solved?

4. Although it has a great API reference, it seem to me JUCE is lacking the tutorial for beginner on more general application (most samples seem to focus on audio application)? or providing overview on JUCE architecture and design philosophy, is there any plan to improve this in near future?

Thanks!
 


#2

Hi

1. I compile and run Introjucer using VC2012 express edition in Windows 8.1, but it crashes (access violation error) when I attempt to remove unused modules from the project, is this a known issue?

There aren't any known issues, so no it isn't one! But I can't reproduce it - removing modules seems to work just fine. Maybe send me a stack trace of the crash?

2. Is it very difficult to setup JUCE without Introjucer? I can't seem to find any tutorial regarding how to setup JUCE without Introjucer.

For an app, no, it's not difficult - just include the correct cpps and headers. For a plugin, there are a ton of horrible platform-specific settings that need to be correct, and I wouldn't attempt that manually. Some people do, but it seems like craziness to me when there's a tool to do it all for you.

Re: openGL, not sure what you mean about multi-window problems, I think you may be misunderstanding something there. Separate windows have always been fine. Overlapping GL and non-GL components within a window is only possible if you use GL rendering for the whole window, but as you can see in the demo that's possible now.

Wish I had time to do more tutorials, but there's a JUCE book available now!

 


#3

1. You were right, I am now unable to reproduce the issue, may be it is just my system. Anyway, here is how I encounter the issue in the first place:
  * Create a new project.
  * Remove the modules juce_audio_basics, juce_audio_devices, juce_audio_formats, juce_audio_plugin_client, juce_audio_processors, juce_cryptography.
  * Attempt to remove juce_video and it crashed.

3. Here is the link to the topic I was talking about http://www.juce.com/forum/topic/opengl-context-overlaps.


#4

That topic is 6 years old - the GL classes are completely rewritten since then. And they were talking about overlapping GL components within the same window, not overlapping desktop windows.


#5

Cool, thanks for the help!


#6

The crash happens again, seem like an intermittent issue, here is the call stack:

>    The Introjucer.exe!juce::CharPointer_UTF8::getAndAdvance() Line 152    C++
     The Introjucer.exe!juce::CharacterFunctions::compare<juce::CharPointer_UTF8,juce::CharPointer_UTF8>(juce::CharPointer_UTF8 s1, juce::CharPointer_UTF8 s2) Line 398    C++
     The Introjucer.exe!juce::CharPointer_UTF8::compare<juce::CharPointer_UTF8>(const juce::CharPointer_UTF8 other) Line 410    C++
     The Introjucer.exe!juce::String::compare(const juce::String & other) Line 590    C++
     The Introjucer.exe!juce::operator==(const juce::String & s1, const juce::String & s2) Line 548    C++
     The Introjucer.exe!juce::operator==(const juce::var & v1, const juce::String & v2) Line 561    C++
     The Introjucer.exe!EnabledModuleList::removeModule(const juce::String & moduleID) Line 734    C++
     The Introjucer.exe!ConfigTreePanel::ModuleItem::handlePopupMenuResult(int resultCode) Line 56    C++
     The Introjucer.exe!treeViewMenuItemChosen(int resultCode, juce::WeakReference<JucerTreeViewBase,juce::ReferenceCountedObject> item) Line 218    C++
     The Introjucer.exe!juce::ModalCallbackFunction::FunctionCaller1<juce::WeakReference<JucerTreeViewBase,juce::ReferenceCountedObject> >::modalStateFinished(int returnValue) Line 287    C++
     The Introjucer.exe!juce::ModalComponentManager::handleAsyncUpdate() Line 197    C++
     The Introjucer.exe!juce::AsyncUpdater::AsyncUpdaterMessage::messageCallback() Line 34    C++
     The Introjucer.exe!juce::WindowsMessageHelpers::dispatchMessageFromLParam(long lParam) Line 49    C++
     The Introjucer.exe!juce::MessageManager::dispatchNextMessageOnSystemQueue(bool returnIfNoPendingMessages) Line 110    C++
     The Introjucer.exe!juce::MessageManager::runDispatchLoopUntil(int millisecondsToRunFor) Line 115    C++
     The Introjucer.exe!juce::MessageManager::runDispatchLoop() Line 97    C++
     The Introjucer.exe!juce::JUCEApplicationBase::main() Line 239    C++
     The Introjucer.exe!WinMain(void * __formal, void * __formal, const char * __formal, int __formal) Line 27    C++
     The Introjucer.exe!__tmainCRTStartup() Line 237    C
     The Introjucer.exe!WinMainCRTStartup() Line 164    C
     kernel32.dll!74f9495d()    Unknown
     [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]    
     ntdll.dll!76ee98ee()    Unknown
     ntdll.dll!76ee98c4()    Unknown


#7

Those function signatures look wrong.. I bet you're not using the latest version and this is a bug that I fixed some time ago.