COmpiling error platform specifi?


#1


../../Source/Gui.cpp: In member function ‘virtual void Gui::comboBoxChanged(juce::ComboBox*)’:
../../Source/Gui.cpp:500:57: error: cannot call constructor ‘juce::MidiMessage::MidiMessage’ directly [-fpermissive]
    MidiMessage mensaje = MidiMessage::MidiMessage(led, 3);


if (comboBox->getSelectedId() == 1){
            uint8 led[3] = { 0xb0, 0x38, 0x00 };
            MidiMessage mensaje = MidiMessage::MidiMessage(led, 3);
            salida->sendMessageNow(mensaje);
        }
 

 

Why in visual studio compiles good but in LInux  the makefile gets error


#2

Ok, to pass that error in exflags for compiler used -fpermissive

now got alsa error?


../../../Desktop/juce/JUCE-LINUX/modules/juce_audio_devices/juce_audio_devices.cpp:106:30: fatal error: alsa/asoundlib.h: No such file or directory
   #include <alsa/asoundlib.h>

WHere do i find that??


#3


 /* Got an include error here? If so, you've either not got ALSA installed, or you've
     not got your paths set up correctly to find its header files.
     The package you need to install to get ASLA support is "libasound2-dev".
     If you don't have the ALSA library and don't want to build Juce with audio support,
     just set the JUCE_ALSA flag to 0.
 

Yes, now where do i set this flag?


#4

You can set this flag in the Introjucer. This is a an option of the “juce_audio_devices” module.


#5

The correct syntax is:

            MidiMessage mensaje (led, 3);

And in C++11 even more simply:

salida->sendMessageNow (MidiMessage ({ 0xb0, 0x38, 0x00 }, 3));

You never need to qualify a constructor with the classname, e.g. "MidiMessage::MidiMessage" - I'm not even sure if that's legal C++, and the compiler is correct to complain about it.

And it's a really bad idea as a learner to use -fpermissive, it'll allow you to adopt bad habits!