OGRE v1.6.4 and CEGUI-0.7.1

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

mukai
Just popping in
Just popping in
Posts: 6
Joined: Sat Oct 24, 2009 10:52

OGRE v1.6.4 and CEGUI-0.7.1

Postby mukai » Tue Nov 17, 2009 10:51

Hi
I'm trying to upgrade my ogre application to CEGUI-0.7.1 so i download CEGUI-0.7.1 and build it like this:

http://www.ogre3d.org/wiki/index.php/Building_CEGUI

and i get all .lib and .dll files I need without any problems.
When i copy .dll and .lib files to my ogre application and run it I get this error:

Image
I open application project and rebuild it but get some linker errors:

Ogre.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall CEGUI::System::~System(void)" (__imp_??1System@CEGUI@@UAE@XZ)

Ogre.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall CEGUI::System::~System(void)" (__imp_??1System@CEGUI@@UAE@XZ)

Ogre.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall CEGUI::System::System(class CEGUI::Renderer *,class CEGUI::ResourceProvider *,class CEGUI::XMLParser *,class CEGUI::ScriptModule *,class CEGUI::String const &,class CEGUI::String const &)" (__imp_??0System@CEGUI@@QAE@PAVRenderer@1@PAVResourceProvider@1@PAVXMLParser@1@PAVScriptModule@1@ABVString@1@4@Z)

Ogre.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class CEGUI::Scheme * __thiscall CEGUI::SchemeManager::loadScheme(class CEGUI::String const &,class CEGUI::String const &)" (__imp_?loadScheme@SchemeManager@CEGUI@@QAEPAVScheme@2@ABVString@2@0@Z)

.\Release\ChessOnline\ChessOnline.exe : fatal error LNK1120: 3 unresolved externals

My next idea was replace CEGUI include files from my application with new one from CEGUI-0.7.1 and I get new (this time compilation) error:

e:\Programowanie\Visual Studio\ChessOnline\ogre\OgreCEGUIRenderer.h(459) : error C2555: 'CEGUI::OgreCEGUIRenderer::createTexture': overriding virtual function return type differs and is not covariant from 'CEGUI::Renderer::createTexture'
e:\Programowanie\Visual Studio\ChessOnline\ogre\CEGUI/CEGUIRenderer.h(169) : see declaration of 'CEGUI::Renderer::createTexture'

e:\Programowanie\Visual Studio\ChessOnline\ogre\OgreCEGUIRenderer.h(459) : error C2555: 'CEGUI::OgreCEGUIRenderer::createTexture': overriding virtual function return type differs and is not covariant from 'CEGUI::Renderer::createTexture'
e:\Programowanie\Visual Studio\ChessOnline\ogre\CEGUI/CEGUIRenderer.h(145) : see declaration of 'CEGUI::Renderer::createTexture'

I have no idea what I'm doing wrong.

User avatar
Jabberwocky
Quite a regular
Quite a regular
Posts: 86
Joined: Wed Oct 31, 2007 18:16
Location: Canada
Contact:

Re: OGRE v1.6.4 and CEGUI-0.7.1

Postby Jabberwocky » Tue Nov 17, 2009 15:27

The change from CEGUI 0.6 to 0.7 is an "interface breaking change".
What does this mean to you?
It means that you can't just replace the library, and expect everything to work. Any code which used CEGUI 0.6 needs to be changed to use CEGUI 0.7 because the functions are different.

Here are the porting notes for upgrading from CEGUI 0.6 to 0.7: http://cegui.org.uk/docs/current/porting6to7.html
Generally, what you should do is this: try compiling your project. If you get a compile error for some FunctionWhatever(), search through those porting notes for FunctionWhatever, and see what needs to be changed.

Important: OgreCEGUIRenderer is obsolete
There is one very important thing that isn't covered very well in those porting notes. OgreCEGUIRenderer, the ogre code which is used to render CEGUI, is now obsolete. This code will not work with CEGUI 0.7. This code has been replaced by CEGUIOgreRenderer, which is CEGUI code rather than Ogre code.

You will need to totally remove OgreCEGUIRenderer from your Ogre project (stop compiling it, stop including it, stop linking to it). You will have to instead link your project to CEGUIOgreRenderer.lib, and (if dynamically linking) copy over CEGUIOgreRenderer.dll / CEGUIOgreRenderer_d.dll to wherever you keep all your dlls.

It's very easy to end up with a mismatch of old CEGUI 0.6 include files, libs, or dlls with new CEGUI 0.7 include files, libs, or dlls. Any errors you get are either because of this, or because you haven't followed the porting notes listed above.
The Salvation Prophecy
Space Combat. Planet Exploration. Strategic Domination.


Return to “Help”

Who is online

Users browsing this forum: No registered users and 8 guests