Problems compiling an application with OGRE and CEGUI

For help with anything that CEGUI doesn't offer straight out-of-the-box, e.g.:
- Implementation of new features, such as new Core classes, widgets, WindowRenderers, etc. ...
- Modification of any existing features for specific purposes
- Integration of CEGUI in new engines or frameworks and writing of new plugins (Renderer, Parser, ...) or modules

Moderators: CEGUI MVP, CEGUI Team

User avatar
NSXEagle
Just popping in
Just popping in
Posts: 14
Joined: Wed Jan 12, 2005 12:06
Location: Kokubunji-shi, Tokyo-to, Japan
Contact:

Problems compiling an application with OGRE and CEGUI

Postby NSXEagle » Mon Jan 10, 2005 11:53

I wanted to write a test program that initializes OGRE and shows an example GUI with CEGUI.

The OGRE-part of the program works perfect, but when I add the line:

Code: Select all

#include "CEGUI.h"
to one of my header or source files, my compiler output is this (unfortunately it's in german and VERY large, but I think you can recognize the errors by their error code):
Kompilieren...
UserInputManager.cpp
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(989) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(1018) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(1504) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(1522) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(1897) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(1915) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(2293) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(3024) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(3051) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(3539) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(3561) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(4016) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(4038) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(4505) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\C++\CEGUI\include\CEGUIString.h(4527) : warning C4267: 'Argument': Konvertierung von 'size_t' nach 'CEGUI::String::size_type', Datenverlust möglich
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(122) : warning C4002: Zu viele übergebene Parameter für das Makro 'calloc'
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(122) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(122) : warning C4229: Anachronismus verwendet: Modifizierer der Daten werden ignoriert
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(122) : error C2040: 'Ogre::sMemManager': 'void *' unterscheidet sich von 'Ogre::MemoryManager' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(122) : error C2491: 'Ogre::MemoryManager::sMemManager': Definition von Statisches Datenelement für dllimport nicht zulässig
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(123) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(123) : warning C4229: Anachronismus verwendet: Modifizierer der Daten werden ignoriert
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(123) : error C2182: 'sMemManager': Unzulässige Verwendung des Typs 'void'
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(123) : error C2371: 'Ogre::sMemManager': Neudefinition; unterschiedliche Basistypen
e:\Software Engineering\C++\OGRE\OgreMain\include\OgreMemoryManager.h(178): Siehe Deklaration von 'Ogre::sMemManager'
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(123) : error C2491: 'Ogre::MemoryManager::sMemManager': Definition von Statisches Datenelement für dllimport nicht zulässig
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(124) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(124) : warning C4229: Anachronismus verwendet: Modifizierer der Daten werden ignoriert
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(124) : error C2040: 'Ogre::sMemManager': 'void *' unterscheidet sich von 'Ogre::MemoryManager' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(124) : error C2491: 'Ogre::MemoryManager::sMemManager': Definition von Statisches Datenelement für dllimport nicht zulässig
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(125) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(125) : warning C4229: Anachronismus verwendet: Modifizierer der Daten werden ignoriert
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(125) : error C2040: 'Ogre::sMemManager': 'void *' unterscheidet sich von 'Ogre::MemoryManager' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
e:\Software Engineering\Visual Studio .NET 2003\Vc7\include\malloc.h(125) : error C2491: 'Ogre::MemoryManager::sMemManager': Definition von Statisches Datenelement für dllimport nicht zulässig
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54) : error C2544: ')' für Operator '()' erwartet
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54) : error C2602: 'Ogre::MemoryManager::sMemManager' ist kein Element einer Basisklasse von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\OGRE\OgreMain\include\OgreMemoryManager.h(178): Siehe Deklaration von 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(41): Siehe Deklaration von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54) : error C2059: Syntaxfehler: ')'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54) : error C2334: Unerwartete(s) Token vor ':'; sichtbarer Funktionstext wird übersprungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54) : error C2760: Syntaxfehler: '{' erwartet und nicht ';'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2144: Syntaxfehler: 'void' sollte auf '}' folgen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2544: ')' für Operator '()' erwartet
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2086: 'void *xercesc_2_6::XMemory::()': Neudefinition
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54): Siehe Deklaration von 'xercesc_2_6::XMemory::operator`()''
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2602: 'Ogre::MemoryManager::sMemManager' ist kein Element einer Basisklasse von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\OGRE\OgreMain\include\OgreMemoryManager.h(178): Siehe Deklaration von 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(41): Siehe Deklaration von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2059: Syntaxfehler: ')'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2334: Unerwartete(s) Token vor ':'; sichtbarer Funktionstext wird übersprungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(64) : error C2760: Syntaxfehler: '{' erwartet und nicht ';'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2144: Syntaxfehler: 'void' sollte auf '}' folgen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2544: ')' für Operator '()' erwartet
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2182: '()': Unzulässige Verwendung des Typs 'void'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2040: 'xercesc_2_6::XMemory::operator`()'': 'int' unterscheidet sich von 'void *' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2602: 'Ogre::MemoryManager::sMemManager' ist kein Element einer Basisklasse von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\OGRE\OgreMain\include\OgreMemoryManager.h(178): Siehe Deklaration von 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(41): Siehe Deklaration von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2059: Syntaxfehler: ')'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2334: Unerwartete(s) Token vor ':'; sichtbarer Funktionstext wird übersprungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(72) : error C2760: Syntaxfehler: '{' erwartet und nicht ';'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2144: Syntaxfehler: 'void' sollte auf '}' folgen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2544: ')' für Operator '()' erwartet
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2086: 'void *xercesc_2_6::XMemory::()': Neudefinition
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(54): Siehe Deklaration von 'xercesc_2_6::XMemory::operator`()''
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2602: 'Ogre::MemoryManager::sMemManager' ist kein Element einer Basisklasse von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\OGRE\OgreMain\include\OgreMemoryManager.h(178): Siehe Deklaration von 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(41): Siehe Deklaration von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2059: Syntaxfehler: ')'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2334: Unerwartete(s) Token vor ':'; sichtbarer Funktionstext wird übersprungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(81) : error C2760: Syntaxfehler: '{' erwartet und nicht ';'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2144: Syntaxfehler: 'void' sollte auf '}' folgen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2544: ')' für Operator '()' erwartet
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2182: '()': Unzulässige Verwendung des Typs 'void'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2040: 'xercesc_2_6::XMemory::operator`()'': 'int' unterscheidet sich von 'void *' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2602: 'Ogre::MemoryManager::sMemManager' ist kein Element einer Basisklasse von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\OGRE\OgreMain\include\OgreMemoryManager.h(178): Siehe Deklaration von 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(41): Siehe Deklaration von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2059: Syntaxfehler: ')'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2334: Unerwartete(s) Token vor ':'; sichtbarer Funktionstext wird übersprungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(88) : error C2760: Syntaxfehler: '{' erwartet und nicht ';'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2144: Syntaxfehler: 'void' sollte auf '}' folgen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2544: ')' für Operator '()' erwartet
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2182: '()': Unzulässige Verwendung des Typs 'void'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2040: 'xercesc_2_6::XMemory::operator`()'': 'int' unterscheidet sich von 'void *' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2602: 'Ogre::MemoryManager::sMemManager' ist kein Element einer Basisklasse von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\OGRE\OgreMain\include\OgreMemoryManager.h(178): Siehe Deklaration von 'Ogre::MemoryManager::sMemManager'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(41): Siehe Deklaration von 'xercesc_2_6::XMemory'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2059: Syntaxfehler: ')'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2334: Unerwartete(s) Token vor ':'; sichtbarer Funktionstext wird übersprungen
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(98) : error C2760: Syntaxfehler: '{' erwartet und nicht ';'
e:\Software Engineering\C++\Xerces 2.6.0\include\xercesc\util\XMemory.hpp(103) : error C2143: Syntaxfehler: Es fehlt '}' vor 'protected'

I am using MS VC++ 2003 and compile with OGRE 0.15, CEGUI 0.1.0, Windows PSDK December 2004 and Xerces 2.6 (I have therefore removed the Xerces 2.5 libraries and includes from CEGUI's dependencies folder - perhaps this is causing this error although CEGUI compiled without problems).
Unfortunately I don't have the #undef min/max problem. I get warnings and errors about size types and memory allocation functions.

Can anyone out there help me?

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

Problems compiling an application with OGRE and CEGUI

Postby CrazyEddie » Mon Jan 10, 2005 12:43

It's caused by a clash between the memory managers in Ogre and Xerces. There are three solutions:
1) Ensure that any CEGUI headers are included before any Ogre headers. or,
2) Surround CEGUI header includes with #include <OgreNoMemoryMacros.h> / #include<OgreMemoryMacros.h> pair. or,
3) Disable the ogre memory manager and recompile ogre.

options 1 or 2 usually suffice ;)

HTH

CE.

User avatar
NSXEagle
Just popping in
Just popping in
Posts: 14
Joined: Wed Jan 12, 2005 12:06
Location: Kokubunji-shi, Tokyo-to, Japan
Contact:

Problems compiling an application with OGRE and CEGUI

Postby NSXEagle » Mon Jan 10, 2005 13:19

Wow! It works! I took solution #2 and everything works fine!

Thank you very much for your quick reply.


Return to “Modifications / Integrations / Customisations”

Who is online

Users browsing this forum: No registered users and 14 guests