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