www.XuvTools.org
Re-Occuring Development Problems / PitfallsSeveral issues can arise when developing XuvTools. Here we collect common mistakes, unfixed thirdparty software errors, and other problems that are likely to arise. Visual Studio Intel Compiler: "qmake project is in a zombie state"When an application project contains a version number, the Intel project converter will generate an incorrect vsproj file. Visual Studio will show an error message saying “project is in a zombie state”. This error can be avoided by removing the version number from the application project. Here an example of a problematic qmake project file: TEMPLATE = app [...] # The following line will cause MSVC Intel converter to fail: VERSION = 1.0.0 boost library naming schemeThe boost library has a clever concept of generating linker dependencies, that works the following: when including boost headers, they instruct the compiler to link against matching boost libraries. For this to work, boost libraries have a name that includes their compilation properties! Namely, this is the compiler toolkit name, the boost version, threading status, and whether its a debug library or not. See the following table for common examples. If the library name contains: 'mt' - multithreaded library 'gd' - debug library 'iw' - compiled with toolkit Intel compiler 'vc90' - compiled with toolkit MSVC 9.0 (2008) 'vc100' - compiled with toolkit MSVC 10.0 (2010) This system can be tricky to use with certain build tools! As an example: Jace depends on boost, but Jace is compiled with MSVC, whereas the libBlitzBioFormats that makes use of Jace is compiled with the Intel compiler - which leads to different boost library names - and therefore linking fails! But boost provides the following switches to change behavior of the library naming: --layout=tagged - Only 'mt' and 'gd' flags in library name. Example: libboost_thread-mt-gd.lib --layout=system - No flags in library name at all (can not build debug/release at the same time). Example: libboost_thread.lib --layout=versioned - default: full flags in library name. Example: libboost_thread-vc90-mt-gd-1_44.lib static versus dynamic linkageA commonly reoccuring topic is linkage: static versus dynamic. XuvTools links all libraries statically (except for JVM, which is not available statically). Here is a collection of facts to start with:
Nokia QT and libpngQT requires to be compiled with (some) qt library enabled, else it will not be able to load the default icons (file browser etc.). If compiling QT 4.6.3 with -qt-libpng, it will still pick up the png.h from /usr/include, in case it is installed. This can lead to library confusion of the following form: libpng warning: Application was compiled with png.h from libpng-1.2.40 libpng warning: Application is running with png.c from libpng-1.4.4 |
|||
|