In settings.h, BYTE hasn't been defined at the point where LPCBYTE is type defined, because windows.h hasn't been included at this point. Of course, windows.h shouldn't be included at this point because WINVER must be defined prior to its inclusion. The #define method solves this problem.
MinGW produces warnings about WINVER being redefined. This isn't bad, because it is still being defined before windows.h is included in International.cpp, and so it is compiling correctly. You should do one of the following:
-Make sure
#include "commonIncludes.h" is before
#include <windows.h> in all the source files.
-Use an #ifndef WINVER conditional statement so that it is only defined when needed (when you have included it before windows.h, which is the case for International.cpp, which is the only file that needs WINVER to be 0x500.)
-Take the WINVER definition out of settings.h and only use it in International.cpp.
-Remove the WINVER and _WIN32_IE definitions, and I can put them in the makefile, although MSVC builds won't benefit from the slightly reduced size.
Did you just comment out the inclusion of datatype.h in NRage PluginV2.h? It won't compile now, because UINT16 and INT16 are defined in that file. That file shouldn't be being used anyway, though; that's what stdint.h is for, and I'm sure it is more accurate.
Regarding making the preprocessor output text, I don't think GCC has this functionality. You can, however, use #warning or #error to produce warnings or errors, respectively. If, for example, you included:
Code:
#warning WINVER redefined
then the compiler would output:
Code:
settings.h:35:2: warning: #warning WINVER redefined
Outputting these messages wouldn't help all that much though, because most users wouldn't see them because of all the other warnings being produced!
For some reason, windres -- the resource script compiler that is part of the MinGW package -- doesn't work at all with file names that contain space characters. Could you replace the space in "NRage PluginV2.rc" with an underscore?