Greetings, folks ! I just ran into a problem that lets me quite clueless: I recently migrated the Cool VL Viewer build system from VS2005 to VS2010 and succeeded, two weeks ago, to compile v1.26.5.0 under VS2010.
This week, I was about to make two new releases (v1.26.4.23 which is basically the same as v1.26.5.0 with just a few things added) and v1.26.5.1 which is the firts release with the v3.3.4 renderer backported (working just fine under Linux). But then I came around an issue dealing with Windows headers inclusion that I just can't figure out. When compiling (either v1.26.4.23 or v1.26.5.1), VS2010 fails for the llwindow library, with the following error (sources path edited to linden\ for clarity): llwindow.cpp linden\indra\llwindow\llwindowwin32.h(45): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int linden\indra\llwindow\llwindowwin32.h(45): error C2143: syntax error : missing ',' before '&' linden\indra\llwindow\llwindowwin32.h(146): error C2061: syntax error : identifier 'COMPOSITIONFORM' linden\indra\llwindow\llwindowwin32.h(147): error C2061: syntax error : identifier 'CANDIDATEFORM' linden\indra\llwindow\llwindowwin32.h(148): error C2061: syntax error : identifier 'IMECHARPOSITION' linden\indra\llwindow\llwindowwin32.h(150): error C2061: syntax error : identifier 'RECONVERTSTRING' linden\indra\llwindow\llwindowwin32.h(177): error C2146: syntax error : missing ';' before identifier 'mWndProc' linden\indra\llwindow\llwindowwin32.h(177): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int linden\indra\llwindow\llwindowwin32.h(177): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int linden\indra\llwindow\llwindowwin32.h(237): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int linden\indra\llwindow\llwindowwin32.h(237): error C2143: syntax error : missing ',' before '&' COMPOSITIONFORM & Co pertain to Imm.h and the errors around lines 45 and 177+ are related to undefined MSG and WNDPROC types (that seem ro pertain to WinUser.h). The weird thing is that I didn't change a single thing in v1.4.26.23 in llwindows/, neither in the cmake files when compared to v1.26.5.0 that (still) compiles just fine !!! I checked the Windows headers inclusion and they seem just fine, with, in llwindowwin32.h: ------------ #ifndef LL_LLWINDOWWIN32_H #define LL_LLWINDOWWIN32_H // Limit Windows API to small and manageable set. #define WIN32_LEAN_AND_MEAN #include <winsock2.h> #include <windows.h> .../... ------------ Adding #include <Imm.h> after #include <windows.h> in llwindowwin32.h allows to get rid of the undefined COMPOSITIONFORM ... RECONVERTSTRING types, but adding #include <WinUser.h> doesn't solve the issue with MSG and WNDPROC not being defined, even if I use: ------------ #ifndef LL_LLWINDOWWIN32_H #define LL_LLWINDOWWIN32_H // Limit Windows API to small and manageable set. #define WIN32_LEAN_AND_MEAN #include <winsock2.h> #include <windows.h> #include <Imm.h> #undef NOUSER #undef NOMSG #undef _WINUSER_ #include <WinUser.h> ------------ I always get: llwindow.cpp linden\indra\llwindow\llwindowwin32.h(50): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int linden\indra\llwindow\llwindowwin32.h(50): error C2143: syntax error : missing ',' before '&' linden\indra\llwindow\llwindowwin32.h(182): error C2146: syntax error : missing ';' before identifier 'mWndProc' linden\indra\llwindow\llwindowwin32.h(182): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int linden\indra\llwindow\llwindowwin32.h(182): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int linden\indra\llwindow\llwindowwin32.h(242): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int linden\indra\llwindow\llwindowwin32.h(242): error C2143: syntax error : missing ',' before '&' What is totally flabbergasting is that between v1.26.5.0 (which compiles fine) and v1.26.4.23, the diff is only 300Kb and NOTHING in it touches the cmake files neither the llwindow/ files !!! Plus, llwindowwin32.cpp (which also needs and includes llwindowwin32.h) compiles just fine, unlike llwindow.cpp (and yes, I also tried to add the same Windows includes in the latter than in the former, to no avail). Finally, I tried on two different build systems (a WinXP SP3 virtual machine and a genuine (non emulated) Windows 7 Ultimate system), to no avail (not a build system issue, apparenetly, especially since v1.26.5.0 still compiles just fine). Any clue of what is going wrong with this sh*tty VS2010 ? Many thanks in advance ! Henri. _______________________________________________ Policies and (un)subscribe information available here: http://wiki.secondlife.com/wiki/OpenSource-Dev Please read the policies before posting to keep unmoderated posting privileges