The extern "C" statements in the header files 'ShinyManager.h', 'ShinyNode.h', 'ShinyNodePool.h', 'ShinyNodeState.h', 'ShinyOutput.h' and 'ShinyZone.h' have to be revised to be compilable with the g++ compiler.
1st option (poor): include "Shiny.h" as fist include in each of the above files
2nd option (nicer): revise the usage of the extern "C" construct in all of the source files i.e. declare extern "C" in each header file where it is needed separately.
There is no gain in defining it only for the "top" include file (Shiny.h) and hope that it will fit with all the other ones.
In MS Visual Studio this is no problem because in some magical way the 'Shiny.h' is included "correctly" for the library build so the extern "C" blocks/braces are handled correctly. With GNU compiler using the makefile however it's not.