From: Philip L. <ph...@ed...> - 2007-10-23 22:21:42
|
On 23/10/2007, at 5:33 PM, Braden McDaniel wrote: > > In general, the warnings are there because they are silly and because > disabling them doesn't really work. If there are warnings you > believe to > be pointing to legitimate issues, it is possible you have found > something that I overlooked in the sea of worthless spew (and > something > that gcc does not complain about). Well, I'll admit I didn't wade through every one, and I also observed that disabling them doesn't work. Ah, Microsoft's quality development tools. > >> Here are the steps so far: >> 1) try to compile boost on Windows. Give up. Use boost- >> consulting.com's somewhat broken boost binaries installer. OK. >> 2) try to compile openvrml against gnuwin32's freetype/zlib/libpng/ >> jpeg. C-runtime model incompatibility forces download and build zlib, >> jpeg, libpng, freetype from source. Oh joy. > > It's been a while since I set up libpng and libjpeg to build with on > Windows. I'm guilty of punting here. Can you tell me more about the C > runtime incompatibilities? Sure.. one or other of libpng or libjpeg from gnuwin32 is built against Visual Studio 2003's DLL runtime (MSVCRT.dll). In Visual Studio 2005 there is no static C runtime model (all C/C++ code links MSVCRT.dll/MSVCPRT.dll). So the externals in libpng.lib or libjpeg.lib must be satisfied from Visual Studio 2005's version of the DLL runtimes. As this version is a few symbols short (_iob, and some from the STL) this results in missing symbols. You cannot just supply MSVCRT71.dll, because of Microsoft's joyous DLL-hell hack (Windows side-by-side assemblies). Nor is there a stub library one can link to for the missing symbols. > > I'll Feel The Pain and get this set up. If in fact you have done a build of OpenVRML on Windows after each release to test it, it would probably be very helpful to just zip that build up and post it as a binary release. >> 3) try to compile openvrml. Fix issues with openvrml.vsproj file, >> including include paths picking up linux openvrml-config instead of >> windows openvrml config. > > That's not a problem with the default include paths. It's a problem > with > putting platform-specific build files in a source tree that you're > trying to use with multiple platforms. In other words, it's a problem > with building in the srcdir. Don't Do That. > This was one I asked about earlier. I think that in the vsproj release build, ..\..\..\..\..\src\libopenvrml is ahead of "." on the "additional includes" line, which makes it pick up the Linux openvrml- config instead of the MSVS one. Its OK on the debug build settings. Another gotcha in this area which I uncovered yesterday.. the latest DirectX SDK's (don't ask why I have this installed) put themselves at the head of Visual Studio's global include path, and they include a version of strsafe.h which is incompatible with the version in the Platform SDK. The error caused by this is a missing symbol STRSAFE_LPCSTR in compiling vrml97node.cpp. The solution is to move the DirectX SDK include path to the tail of the includes list so that #include <strsafe.h> picks up strsafe from the Platform SDK. > Can you please file a bug in SourceForge and attach the .wrl file > you're > using? I will take a look at this. Done. I've attached 2 zip archives to the bug. One (sample wrl.zip) contains two vrml files, one (apple.wrl) is a simple mesh with jpeg texture, the other (snoman.wrl) has no textures, but has some animation. Both load and render OK (they do dump a few warnings about non-normalized rotation vectors) using sdl-viewer (on Mac OS X using openvrml-sdl-viewer from my openvrml-016 package from fink). The second zip archive contains the VS project files I used to build openvrml (a diff with the ones in openvrml-0.16.6.tar.gz should quickly show the changes). I've also packaged my builds of freetype, zlib, libpng, and jpeg into a package, now available at http://www.eden.net.nz/7/20071024/ zlib_freetype231_jpeg_libpng-bin-win32-vs81.zip. Cheers, Phil. |