SILLY - STATIC LIB

For help with general CEGUI usage:
- Questions about the usage of CEGUI and its features, if not explained in the documentation.
- Problems with the CMAKE configuration or problems occuring during the build process/compilation.
- Errors or unexpected behaviour.

Moderators: CEGUI MVP, CEGUI Team

mrGREEN
Just popping in
Just popping in
Posts: 12
Joined: Wed Apr 01, 2009 12:49

SILLY - STATIC LIB

Postby mrGREEN » Wed Apr 01, 2009 12:52

Hello
I was wondering, it's possible to obtain an static library for SILLY. I want to include CEGUI in my current project, and I prefer to use static libraries. I'm using MVS2008.
Thanks a lot
mrGREEN

Jamarr
CEGUI MVP
CEGUI MVP
Posts: 812
Joined: Tue Jun 03, 2008 23:59
Location: USA

Postby Jamarr » Wed Apr 01, 2009 16:47

Yes it is possible. I have set this up myself. You need to update both the Silly and SillyImageCodec projects appropriately, as well as adjust the base header file in each project. I set this up awhile ago and did not store these changes in version-control (shame on me), so I may be missing some information, but this should at least get you started:

Open the SILLY project and in SILLYBase.h look for:

Code: Select all

#if (defined(_WIN32) || defined(__WIN32__))
#   undef SILLY_OPT_INLINE // No inlining
#   undef SILLY_BE // Little Endian
#   ifdef SILLY_EXPORTS
#       define SILLY_EXPORT __declspec(dllexport)
#   else
#       define SILLY_EXPORT __declspec(dllimport)
#   endif
#else
#   define SILLY_EXPORT
#endif

change this too:

Code: Select all

#if (defined(_WIN32) || defined(__WIN32__))
#   undef SILLY_BE // Little Endian
#   if defined(SILLY_STATIC)
#      define SILLY_EXPORT
#   else
#      undef SILLY_OPT_INLINE // No inlining
#      ifdef SILLY_EXPORTS
#         define SILLY_EXPORT __declspec(dllexport)
#      else
#         define SILLY_EXPORT __declspec(dllimport)
#      endif
#   endif
#else
#   define SILLY_EXPORT
#endif

then put SILLY_STATIC in your preprocessor definitions and rebuild.


Open the CEGUISILLYImageCodec module and look for:

Code: Select all

#if (defined( __WIN32__ ) || defined( _WIN32 ))
#   ifdef CEGUISILLYIMAGECODEC_EXPORTS
#       define CEGUISILLYIMAGECODEC_API __declspec(dllexport)
#   else
#       define CEGUISILLYIMAGECODEC_API __declspec(dllimport)
#   endif
#else
#   define CEGUISILLYIMAGECODEC_API
#endif

change this too:

Code: Select all

#if (defined( __WIN32__ ) || defined( _WIN32 )) && !defined(CEGUI_STATIC)
#   ifdef CEGUISILLYIMAGECODEC_EXPORTS
#       define CEGUISILLYIMAGECODEC_API __declspec(dllexport)
#   else
#       define CEGUISILLYIMAGECODEC_API __declspec(dllimport)
#   endif
#else
#   define CEGUISILLYIMAGECODEC_API
#endif

then use the Relase_Static configuration and rebuild.

mrGREEN
Just popping in
Just popping in
Posts: 12
Joined: Wed Apr 01, 2009 12:49

Postby mrGREEN » Thu Apr 02, 2009 08:09

Thanks, I just need to know where can I find SILLY source code to apply the modification and rebuild the .lib

User avatar
CrazyEddie
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England
Contact:

Postby CrazyEddie » Thu Apr 02, 2009 09:11


mrGREEN
Just popping in
Just popping in
Posts: 12
Joined: Wed Apr 01, 2009 12:49

Postby mrGREEN » Thu Apr 02, 2009 14:07

Ok
I download SILLY and CEGUI source code and generate the silly_d.lib and CEGUISILLYImageCodec_Static.lib including the changes. Now I'm trying to execute Sample Demo 6.
I change all the Code Generation->Runtime Library to Multi-thread Debug (/MTd), and I add SILLY_STATIC and FREEGLUT_STATIC on Preprocessor.
Now I got this linking error

Code: Select all

1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _free already defined in LIBCMTD.lib(dbgfree.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _malloc already defined in LIBCMTD.lib(dbgmalloc.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _memmove already defined in LIBCMTD.lib(memmove.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __wassert already defined in LIBCMTD.lib(wassert.obj)
1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strrchr already defined in LIBCMTD.lib(strrchr.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _sprintf already defined in LIBCMTD.lib(sprintf.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _memchr already defined in LIBCMTD.lib(memchr.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strncmp already defined in LIBCMTD.lib(strncmp.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _atol already defined in LIBCMTD.lib(atox.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _vprintf already defined in LIBCMTD.lib(vprintf.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _exit already defined in LIBCMTD.lib(crt0dat.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _getenv already defined in LIBCMTD.lib(getenv.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _ftell already defined in LIBCMTD.lib(ftell.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _fseek already defined in LIBCMTD.lib(fseek.obj)
1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _fclose already defined in LIBCMTD.lib(fclose.obj)
1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library


I generate all the CEGUI_***_Static_d.lib using Code Generation->Runtime Library to Multi-thread Debug (/MTd). What am I missing?

Do I need to generate all the other dependencies as Static Libraries?

Cheers

EDIT:
Ok I add on Linker->Input->Ignore Specific Library->LIBCMTD and it compiles and it work. But I got this warnings. So, I'll focus on eliminated this warnings

Code: Select all

1>freetype_D.lib(ftsystem.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(ftinit.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(ftdebug.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(ftbase.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(ftglyph.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(ftbitmap.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(bdf.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(cff.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(type1cid.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(pcf.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(pfr.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(sfnt.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(truetype.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(type1.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(type42.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(winfnt.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(raster.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(smooth.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(autofit.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(ftgzip.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(ftlzw.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(psaux.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(pshinter.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>freetype_D.lib(psnames.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\freetype_D.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_chartables.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_compile.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_exec.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_globals.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_newline.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_ord2utf8.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_tables.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_try_flipped.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_valid_utf8.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>pcre_d.lib(pcre_xclass.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\pcre_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>expat_d.lib(xmlparse.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\expat_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>expat_d.lib(xmlrole.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\expat_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
1>expat_d.lib(xmltok.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '../../../../dependencies/lib\expat_d.lib' or at 'c:\Rangel\PRIVATE\ENGINE\PROGRAM\CEGUI-0.6.2\Samples\bin\vc90.pdb'; linking object as if no debug info
Last edited by mrGREEN on Thu Apr 02, 2009 14:35, edited 1 time in total.

Jamarr
CEGUI MVP
CEGUI MVP
Posts: 812
Joined: Tue Jun 03, 2008 23:59
Location: USA

Postby Jamarr » Thu Apr 02, 2009 14:32

mrGREEN wrote:Do I need to generate all the other dependencies as Static Libraries?


Yup, that is correct. SILLY's dependencies where compiled with /MD (multi-threaded dll), which is why the linker is still looking for MSVCRT. I believe SILLY uses jpeg6b and libpng (which uses zlib) internally, so you will need to download those libraries and recompile them using /MT (multi-threaded).

mrGREEN
Just popping in
Just popping in
Posts: 12
Joined: Wed Apr 01, 2009 12:49

Postby mrGREEN » Thu Apr 02, 2009 14:46

Jamarr wrote:Yup, that is correct. SILLY's dependencies where compiled with /MD (multi-threaded dll), which is why the linker is still looking for MSVCRT. I believe SILLY uses jpeg6b and libpng (which uses zlib) internally, so you will need to download those libraries and recompile them using /MT (multi-threaded).


So it's like it's a whil(1) look-for-all-dependencies

I'll try again


Return to “Help”

Who is online

Users browsing this forum: No registered users and 10 guests