From: Braden M. <br...@en...> - 2007-10-24 04:22:15
|
On Wed, 2007-10-24 at 11:21 +1300, Philip Lamb wrote: > On 23/10/2007, at 5:33 PM, Braden McDaniel wrote: [snip] > > 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. Lovely. Did you end up building from the official libjpeg and libpng distributions? Or something modified to be more Windows-friendly? > > 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. Because I think that supporting binaries without an actual installer would be more difficult than helping people build the source. > >> 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, "." is first in the list for both Debug and Release configurations in the project files that are included with 0.16.6. > which makes it pick up the Linux openvrml- > config instead of the MSVS one. Its OK on the debug build settings. It won't do that if that file doesn't exist--and it doesn't if you don't build in the srcdir. > 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. Nice. > > Can you please file a bug in SourceForge and attach the .wrl file > > you're > > using? I will take a look at this. > > Done. Thank you. -- Braden McDaniel e-mail: <br...@en...> <http://endoframe.com> Jabber: <br...@ja...> |