Philip,
To build the dynamic link versions with VC 8 Express you may need the psdk too, and some modifications to the default build settings. See http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx for instructions. I'm using this combo (VC 8 Express + PSDK for Windows Server 2003 R2) to build the release dll version, which builds and runs fine on WinXP sp2. Last debug build I've done was osg1.1, but I do expect 1.2 to build fine too. I did rebuild all external dependency's with VC8, this might be necessary for link or to keep things from crashing of the fly.

To use the executables on other machines you'll need vcredist_x86.exe (download from microsoft), which is NOT installed with the VC Express version (the binary's are installed, the installer is not).
Laurens.

On Sat, 25 Nov 2006 08:40:25 -0000
 "Philip Taylor" <[EMAIL PROTECTED]> wrote:
There seems to be an issue building OSG with VC 8 Express.

VC8 Express appears to lack the ability to build dynamic (multi-threaded) libraries because Microsoft have not included the relevant 32 bit libraries.

A mixture of multi-thread and static builds with regard to dynamic memory allocation because two different schemes are used which conflict causing
memory contention.

See the previous threads such as "RE: [osg-users] Windows OSG build
philosophy" for suggestions.

 -----Original Message-----
 From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of Paul Martz
 Sent: 24 November 2006 23:16
 To: 'osg users'
Subject: RE: [osg-users] Help: errors building osgCore and
examples(VC++Express, WinXP)


From your point 4) below, it looks like you only built the static libraries, not the dynamic libraries; is this what you intended? Not sure about VS Express, but in VS7/8 you can do a "batch build" and select any or
all of dynamic/static and Release/Debug.

The problem you reported in A) is missing third party dependencies. In order for OSG to support TIFF image files, for example, the TIFF plugin will need to link with the 3rd party libTIFF, and if you don't have the libTIFF headers and libraries installed, then the TIFF plugin will have build errors and not build. This is OK as long as you don't need TIFF support.

I'm not sure about your problem B) below, but I suspect the portion of OSG you're trying to build requires the dynamic library version of OpenThreads
and you have only built the static versions.

 I hope this helps a little.
    -Paul




----------------------------------------------------------------------------
   From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Yegor Plam at RR
   Sent: Friday, November 24, 2006 3:41 PM
   To: [email protected]
Subject: [osg-users] Help: errors building osgCore and examples
(VC++Express, WinXP)


   Hello,



I'm a new user and am having trouble building the core and examples.



   1)    I am using VC++ Express on WinXP.

2) I downloaded OSG_OP_OT-1.2.zip and OpenSceneGraph-Data-1.1.zip

3) I built (in this order): OpenThreads, Producer, osg
Core&Examples (the whole solution)

4) The first 2 seemed to build correctly. OpenThreads project generated OpenThreadsWin32d_s.lib in /lib/win32, and Producer project
generated Producerd_s.lib in its /lib/win32.

5) Attempt to build Core and "everything else" generated a bunch
of errors.



On my first try, I (mistakenly) tried to build osgCore before OThreads and Producer, which resulted in a bunch of linker errors, something to the effect of "LINK error: can't find OpenThreadsWin32d.lib" (the osg solution
build setting is "debug|static", btw).



I then read the README.txt and tried again, building OT and P first. The resulting libraries have different names than the LINK error. (extra "_s"). So I created copies of both libraries without the "_s" and tried a
clean build.  Now I have the following set of errors:



   A) compile errors: can't find the following .h files:

   'gdal_priv.h': No such file or directory

   'tiffio.h': No such file or directory

   'zlib.h': No such file or directory

   'jpeglib.h': No such file or directory

   'gif_lib.h': No such file or directory

   'gdal_priv.h': No such file or directory

   'ft2build.h': No such file or directory

   'GL/glut.h': No such file or directory



I searched for some of these files with WinExp search function. couldn't
find them.



   B) Linker errors:

1>------ Build started: Project: Core osgIntrospection, Configuration:
Debug Win32 ------

   1>Linking...

2>------ Build started: Project: Core osgTerrain, Configuration: Debug
Static Win32 ------

   2>Compiling...

   2>DataSet.cpp

1> Creating library ../../lib/Win32/osgIntrospectiond.lib and object
../../lib/Win32/osgIntrospectiond.exp

1>Reflection.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall OpenThreads::Mutex::Mutex(void)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]) referenced in function "private: static struct osgIntrospection::Reflection::StaticData & __cdecl
osgIntrospection::Reflection::getOrCreateStaticData(void)"
([EMAIL PROTECTED]@osgIntrospection@@[EMAIL PROTECTED]@XZ)

1>Reflection.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: virtual __thiscall
OpenThreads::Mutex::~Mutex(void)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]) referenced in function "void __cdecl `private: static struct
Reflection::getOrCreateStaticData::StaticData & __cdecl
osgIntrospection::Reflection::getOrCreateStaticData(void)'::`2'::`dynamic
atexit destructor for 'access_mtx''(void)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@@CAAA
[EMAIL PROTECTED]@[EMAIL PROTECTED])

1>.\../../bin/Win32/osgIntrospectiond.dll : fatal error LNK1120: 2
unresolved externals

   1>Build log was saved at
"file://c:\OSG_OP_OT-1.2\OpenSceneGraph\VisualStudio\osgIntrospection\Win32\
Debug\BuildLog.htm"

   1>Core osgIntrospection - 3 error(s), 0 warning(s)



   And.



9>------ Build started: Project: Example osgwindows, Configuration:
Debug Win32 ------

10>------ Build started: Project: Example osgvolume, Configuration:
Debug Win32 ------

   9>Linking...

   10>Linking...

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char>
::operator<<(class
std::basic_ostream<char,struct std::char_traits<char> > & (__cdecl*)(class std::basic_ostream<char,struct std::char_traits<char> > &))"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@@@std@@[EMAIL PROTECTED]@AAV01@@Z@
Z) already defined in OpenThreadsWin32d.lib(Win32Thread.obj)

   9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "class
std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::endl(class std::basic_ostream<char,struct std::char_traits<char> > &)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]@[EMAIL PROTECTED]@@@[EMAIL PROTECTED]@@Z) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> >(char const *)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL 
PROTECTED]@Z)
already defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >::~basic_string<char,struct
std::char_traits<char>,class std::allocator<char>
(void)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL 
PROTECTED])
already defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char>
::setstate(int,bool)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@[EMAIL PROTECTED]) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: int __thiscall std::ios_base::width(int)" ([EMAIL PROTECTED]@std@@[EMAIL PROTECTED]) already defined in
OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char>
::sputn(char const
*,int)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@[EMAIL PROTECTED]) already defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: static bool __cdecl std::char_traits<char>::eq_int_type(int const &,int const &)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]) already defined in
OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: static int __cdecl std::char_traits<char>::eof(void)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@SAHXZ) already defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char>
::sputc(char)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@[EMAIL PROTECTED]) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: class std::basic_streambuf<char,struct std::char_traits<char>
* __thiscall
std::basic_ios<char,struct std::char_traits<char>
::rdbuf(void)const "
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@[EMAIL PROTECTED]
[EMAIL PROTECTED]@std@@@[EMAIL PROTECTED]) already defined in
OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: char __thiscall std::basic_ios<char,struct std::char_traits<char>
::fill(void)const "
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@QBEDXZ) already defined in
OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: int __thiscall std::ios_base::flags(void)const " ([EMAIL PROTECTED]@std@@QBEHXZ) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: int __thiscall std::ios_base::width(void)const " ([EMAIL PROTECTED]@std@@QBEHXZ) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: static unsigned int __cdecl std::char_traits<char>::length(char const *)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]) already defined in
OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char>
::flush(void)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@[EMAIL PROTECTED]) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char>
::tie(void)const "
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@[EMAIL PROTECTED]
[EMAIL PROTECTED]@std@@@[EMAIL PROTECTED]) already defined in
OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: bool __thiscall std::ios_base::good(void)const " ([EMAIL PROTECTED]@std@@QBE_NXZ) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: void __thiscall std::basic_ostream<char,struct std::char_traits<char>
::_Osfx(void)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@QAEXXZ) already defined
in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char>
::_Lock(void)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@QAEXXZ) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char>
::_Unlock(void)"
([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@@std@@QAEXXZ) already
defined in OpenThreadsWin32d.lib(Win32Thread.obj)

9>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" ([EMAIL PROTECTED]@std@@[EMAIL PROTECTED]@XZ) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class
std::locale::_Locimp * __cdecl std::locale::_Init(void)"
([EMAIL PROTECTED]@std@@[EMAIL PROTECTED]@XZ) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static void __cdecl std::locale::facet::facet_Register(class std::locale::facet *)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@CAXPAV123@@Z) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,char const *)" ([EMAIL PROTECTED]@std@@[EMAIL PROTECTED]@Z) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_dtor(class std::_Locinfo *)" ([EMAIL PROTECTED]@std@@SAXPAV12@@Z) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(ios.obj) : error LNK2005: "private: static void __cdecl
std::ios_base::_Ios_base_dtor(class std::ios_base *)"
([EMAIL PROTECTED]@std@@CAXPAV12@@Z) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(ios.obj) : error LNK2005: "public: static void __cdecl
std::ios_base::_Addstd(class std::ios_base *)"
([EMAIL PROTECTED]@std@@SAXPAV12@@Z) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]@Z) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(xdebug.obj) : error LNK2005: "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" ([EMAIL PROTECTED]@std@@[EMAIL PROTECTED]) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(xdebug.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" ([EMAIL PROTECTED]@std@@[EMAIL PROTECTED]) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>libcpmtd.lib(xdebug.obj) : error LNK2005: "struct std::_DebugHeapTag_t
const & __cdecl std::_DebugHeapTag_func(void)"
([EMAIL PROTECTED]@@[EMAIL PROTECTED]@XZ) already defined in
msvcprtd.lib(MSVCP80D.dll)

9>LIBCMTD.lib(setlocal.obj) : error LNK2005: __configthreadlocale
already defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _free already defined in
MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount already
defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall std::exception::exception(void)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]) already defined
in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall
std::exception::exception(char const * const &)"
([EMAIL PROTECTED]@@[EMAIL PROTECTED]@Z) already defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall
std::exception::exception(class std::exception const &)"
([EMAIL PROTECTED]@@[EMAIL PROTECTED]@@Z) already defined in
MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: virtual __thiscall std::exception::~exception(void)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]) already defined
in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: virtual char const
* __thiscall std::exception::what(void)const "
([EMAIL PROTECTED]@std@@UBEPBDXZ) already defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall std::bad_cast::bad_cast(char const *)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]@Z) already
defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall
std::bad_cast::bad_cast(class std::bad_cast const &)"
([EMAIL PROTECTED]@@[EMAIL PROTECTED]@@Z) already defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: virtual __thiscall std::bad_cast::~bad_cast(void)" ([EMAIL PROTECTED]@@[EMAIL PROTECTED]) already defined in
MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(_file.obj) : error LNK2005: ___iob_func already defined in
MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(lconv.obj) : error LNK2005: _localeconv already defined in
MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(tidtable.obj) : error LNK2005: __encode_pointer already
defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(tidtable.obj) : error LNK2005: __decode_pointer already
defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already
defined in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in
MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit already defined in
MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __cexit already defined in
MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined
in MSVCRTD.lib(MSVCR80D.dll)

9>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined
in MSVCRTD.lib(MSVCR80D.dll)

   9>Build log was saved at
"file://c:\OSG_OP_OT-1.2\OpenSceneGraph\VisualStudio\examples\osgwindows\Win
32\Debug\BuildLog.htm"

   9>Example osgwindows - 54 error(s), 0 warning(s)

   10>Build log was saved at
"file://c:\OSG_OP_OT-1.2\OpenSceneGraph\VisualStudio\examples\osgvolume\Win3
2\Debug\BuildLog.htm"

   10>Example osgvolume - 0 error(s), 0 warning(s)





Seems like there are unresolved Mutex:: function calls and collisions
between different DLLs/Libraries?

This kind of stuff is actually my weakest point as a programmer, I could
really use some help.



   Thanks!



   -Yegor

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to