CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

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

soulstorm
Just popping in
Just popping in
Posts: 2
Joined: Fri Aug 30, 2013 09:58

CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby soulstorm » Fri Aug 30, 2013 10:19

Hello,

Newbie here. I am trying to compile CEGUI for use with OGRE 1.9.

This is my OGRE configuration (which I have compiled successfully as a .framework):

--Built from the latest mercurial.
-- LibC++ dependencies and support enabled.

Now, on to CEGUI
-- I downloaded the dependencies and the latest source here.
-- I compiled the dependencies using CMake
-- I dragged the compiled dependencies folder into the source folder of CEGUI
-- I configured the CEGUI source using CMAKE for Xcode, enabling CEGUI_BUILD_RENDERER_OGRE, CEGUI_BUILD_STATIC_CONFIGURATION, and CEGUI_BUILD_SHARED_LIBS_WITH_STATIC_DEPENDENCIES
-- I opened the Xcode project and manually entered the "header search paths" to my boost directory (I had to do that, as I have installed boost using the Ogre dependencies package for libc++, so the headers are not in the default directory, and they could not be found).
-- I tried to compile the Ogre renderer target.
-- The CEGUI base compiles normally. However, the Ogre renderer gives me errors:

Code: Select all

In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:28:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/WindowTarget.h:31:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/RenderTarget.h:34:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreMatrix4.h:32:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgrePrerequisites.h:324:32: error: typedef redefinition with different types ('SharedPtr<Ogre::Texture>' vs 'Ogre::TexturePtr')
    typedef SharedPtr<Texture> TexturePtr;
                               ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:28:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/WindowTarget.h:31:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/RenderTarget.h:32:
/Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/Renderer.h:57:7: note: previous definition is here
class TexturePtr;
      ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:92:48: warning: 'Ogre::TextureManager::createOrRetrieve' hides overloaded virtual function [-Woverloaded-virtual]
        virtual ResourceCreateOrRetrieveResult createOrRetrieve(
                                               ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:34:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreResourceManager.h:166:42: note: hidden overloaded virtual function 'Ogre::ResourceManager::createOrRetrieve' declared here
                virtual ResourceCreateOrRetrieveResult createOrRetrieve(const String& name,
                                                       ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:126:28: warning: 'Ogre::TextureManager::prepare' hides overloaded virtual function [-Woverloaded-virtual]
        virtual TexturePtr prepare(
                           ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:34:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreResourceManager.h:397:23: note: hidden overloaded virtual function 'Ogre::ResourceManager::prepare' declared here
                virtual ResourcePtr prepare(const String& name,
                                    ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:161:28: warning: 'Ogre::TextureManager::load' hides overloaded virtual function [-Woverloaded-virtual]
        virtual TexturePtr load(
                           ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:34:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreResourceManager.h:417:23: note: hidden overloaded virtual function 'Ogre::ResourceManager::load' declared here
                virtual ResourcePtr load(const String& name,
                                    ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:338:20: error: incomplete result type 'Ogre::TexturePtr' in function definition
        TexturePtr createManual(const String & name, const String& group,
                   ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:28:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/WindowTarget.h:31:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/RenderTarget.h:32:
/Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/Renderer.h:57:7: note: forward declaration of 'Ogre::TexturePtr'
class TexturePtr;
      ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:343:11: error: calling 'createManual' with incomplete return type 'Ogre::TexturePtr'
                        return createManual(name, group, texType, width, height, 1,
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreTextureManager.h:289:28: note: 'createManual' declared here
        virtual TexturePtr createManual(const String & name, const String& group,
                           ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:28:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/WindowTarget.h:31:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/RenderTarget.h:32:
/Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/Renderer.h:57:7: note: forward declaration of 'Ogre::TexturePtr'
class TexturePtr;
      ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:35:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreViewport.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreFrustum.h:444:22: warning: 'Ogre::Frustum::isVisible' hides overloaded virtual function [-Woverloaded-virtual]
        virtual bool isVisible(const AxisAlignedBox& bound, FrustumPlane* culledBy = 0) const;
                     ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:35:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreViewport.h:34:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreFrustum.h:32:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreMovableObject.h:292:22: note: hidden overloaded virtual function 'Ogre::MovableObject::isVisible' declared here
        virtual bool isVisible(void) const;
                     ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:35:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreViewport.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreFrustum.h:457:22: warning: 'Ogre::Frustum::isVisible' hides overloaded virtual function [-Woverloaded-virtual]
        virtual bool isVisible(const Sphere& bound, FrustumPlane* culledBy = 0) const;
                     ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:35:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreViewport.h:34:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreFrustum.h:32:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreMovableObject.h:292:22: note: hidden overloaded virtual function 'Ogre::MovableObject::isVisible' declared here
        virtual bool isVisible(void) const;
                     ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:35:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreViewport.h:34:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreFrustum.h:470:22: warning: 'Ogre::Frustum::isVisible' hides overloaded virtual function [-Woverloaded-virtual]
        virtual bool isVisible(const Vector3& vert, FrustumPlane* culledBy = 0) const;
                     ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:30:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreRenderTarget.h:35:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreViewport.h:34:
In file included from /Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreFrustum.h:32:
/Users/soulstorm/Library/Frameworks/Ogre.framework/Headers/OgreMovableObject.h:292:22: note: hidden overloaded virtual function 'Ogre::MovableObject::isVisible' declared here
        virtual bool isVisible(void) const;
                     ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:85:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/./RenderTarget.inl:31:
/Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/GeometryBuffer.h:104:26: error: field has incomplete type 'Ogre::TexturePtr'
        Ogre::TexturePtr texture;
                         ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:28:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/WindowTarget.h:31:
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/RenderTarget.h:32:
/Users/soulstorm/Downloads/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/Renderer.h:57:7: note: forward declaration of 'Ogre::TexturePtr'
class TexturePtr;
      ^
In file included from /Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:85:
/Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/./RenderTarget.inl:50:5: warning: field 'd_viewportValid' will be initialized after field 'd_viewDistance' [-Wreorder]
    d_viewportValid(false),
    ^
/Users/soulstorm/Downloads/cegui-0.8.2/cegui/src/RendererModules/Ogre/WindowTarget.cpp:39:5: note: in instantiation of member function 'CEGUI::OgreRenderTarget<CEGUI::RenderTarget>::OgreRenderTarget' requested here
    OgreRenderTarget<>(owner, rs)
    ^
7 warnings and 4 errors generated.



My guess is that it seems that there are some things that have changed in the texturing system in Ogre 1.9, and CEGUI expects to find something else. Can anyone help with this?

User avatar
BrightBit
Not too shy to talk
Not too shy to talk
Posts: 35
Joined: Mon May 30, 2011 03:30
Contact:

Re: CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby BrightBit » Sat Aug 31, 2013 19:05

Hi soulstorm,

welcome to the CEGUI forums. Did you call hg update v1-9 on your Ogre source directory first?
How does your OgrePrerequisites.h look like?


Greetings
BrightBit
"Yeah so if you ever need info about anyone [...] Just ask. [...] They 'trust me'. Dumb fucks." - Mark Zuckerberg (Facebook CEO)

soulstorm
Just popping in
Just popping in
Posts: 2
Joined: Fri Aug 30, 2013 09:58

Re: CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby soulstorm » Sat Aug 31, 2013 21:37

BrightBit wrote:Hi soulstorm,

welcome to the CEGUI forums. Did you call hg update v1-9 on your Ogre source directory first?
How does your OgrePrerequisites.h look like?


Greetings
BrightBit


Yes, I have already switched to the 1-9 branch of Ogre. And below is the content of my OgrePrerequisites.h file.

Code: Select all

/*-------------------------------------------------------------------------
This source file is a part of OGRE
(Object-oriented Graphics Rendering Engine)

For the latest info, see http://www.ogre3d.org/

Copyright (c) 2000-2013 Torus Knot Software Ltd
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE
-------------------------------------------------------------------------*/
#ifndef __OgrePrerequisites_H__
#define __OgrePrerequisites_H__

// Platform-specific stuff
#include "OgrePlatform.h"

// Needed for OGRE_WCHAR_T_STRINGS below
#include <string>


// configure memory tracking
#if OGRE_DEBUG_MODE
#   if OGRE_MEMORY_TRACKER_DEBUG_MODE
#      define OGRE_MEMORY_TRACKER 1
#   else
#      define OGRE_MEMORY_TRACKER 0
#   endif
#else
#   if OGRE_MEMORY_TRACKER_RELEASE_MODE
#      define OGRE_MEMORY_TRACKER 1
#   else
#      define OGRE_MEMORY_TRACKER 0
#   endif
#endif




namespace Ogre {
    // Define ogre version
    #define OGRE_VERSION_MAJOR 1
    #define OGRE_VERSION_MINOR 9
    #define OGRE_VERSION_PATCH 0
   #define OGRE_VERSION_SUFFIX "unstable"
    #define OGRE_VERSION_NAME "Ghadamon"

    #define OGRE_VERSION    ((OGRE_VERSION_MAJOR << 16) | (OGRE_VERSION_MINOR << 8) | OGRE_VERSION_PATCH)

    // define the real number values to be used
    // default to use 'float' unless precompiler option set
    #if OGRE_DOUBLE_PRECISION == 1
      /** Software floating point type.
      @note Not valid as a pointer to GPU buffers / parameters
      */
        typedef double Real;
    #else
      /** Software floating point type.
      @note Not valid as a pointer to GPU buffers / parameters
      */
        typedef float Real;
    #endif

    #if OGRE_COMPILER == OGRE_COMPILER_GNUC && OGRE_COMP_VER >= 310 && !defined(STLPORT)
   #   if OGRE_COMP_VER >= 430
   #       define HashMap ::std::tr1::unordered_map
   #      define HashSet ::std::tr1::unordered_set
   #    else
   #       define HashMap ::__gnu_cxx::hash_map
   #       define HashSet ::__gnu_cxx::hash_set
   #    endif
    #elif OGRE_COMPILER == OGRE_COMPILER_CLANG
    #    if defined(_LIBCPP_VERSION)
    #       define HashMap ::std::unordered_map
    #       define HashSet ::std::unordered_set
    #    else
    #       define HashMap ::std::tr1::unordered_map
    #       define HashSet ::std::tr1::unordered_set
    #    endif
    #else
    #   if OGRE_COMPILER == OGRE_COMPILER_MSVC && !defined(_STLP_MSVC)
    #       if _MSC_FULL_VER >= 150030729 // VC++ 9.0 SP1+
    #           define HashMap ::std::tr1::unordered_map
    #           define HashSet ::std::tr1::unordered_set
    #       elif OGRE_THREAD_PROVIDER == 1
    #           define HashMap ::boost::unordered_map
    #           define HashSet ::boost::unordered_set
    #       else
    #           define HashMap ::std::unordered_map
    #           define HashSet ::std::unordered_set
    #       endif
    #   else
    #       define HashMap ::std::unordered_map
   #       define HashSet ::std::unordered_set
    #   endif
    #endif

    #define OGRE_DEFINE_STATIC_LOCAL(type, name, arguments) \
        static type& name = *new type arguments

    /** In order to avoid finger-aches :)
    */
    typedef unsigned char uchar;
    typedef unsigned short ushort;
    typedef unsigned int uint;
   typedef unsigned long ulong;

// Pre-declare classes
// Allows use of pointers in header files without including individual .h
// so decreases dependencies between files
    class Angle;
    class Animation;
    class AnimationState;
    class AnimationStateSet;
    class AnimationTrack;
    class Archive;
    class ArchiveFactory;
    class ArchiveManager;
    class AutoParamDataSource;
    class AxisAlignedBox;
    class AxisAlignedBoxSceneQuery;
    class Billboard;
    class BillboardChain;
    class BillboardSet;
    class Bone;
    class Camera;
    class Codec;
    class ColourValue;
    class ConfigDialog;
    template <typename T> class Controller;
    template <typename T> class ControllerFunction;
    class ControllerManager;
    template <typename T> class ControllerValue;
   class DefaultWorkQueue;
    class Degree;
   class DepthBuffer;
    class DynLib;
    class DynLibManager;
    class EdgeData;
    class EdgeListBuilder;
    class Entity;
    class ErrorDialog;
    class ExternalTextureSourceManager;
    class Factory;
    struct FrameEvent;
    class FrameListener;
    class Frustum;
    class GpuProgram;
    class GpuProgramManager;
   class GpuProgramUsage;
    class HardwareIndexBuffer;
    class HardwareOcclusionQuery;
    class HardwareVertexBuffer;
   class HardwarePixelBuffer;
    class HardwarePixelBufferSharedPtr;
   class HighLevelGpuProgram;
   class HighLevelGpuProgramManager;
   class HighLevelGpuProgramFactory;
    class IndexData;
   class InstanceBatch;
   class InstanceBatchHW;
   class InstanceBatchHW_VTF;
   class InstanceBatchShader;
   class InstanceBatchVTF;
   class InstanceManager;
   class InstancedEntity;
    class IntersectionSceneQuery;
    class IntersectionSceneQueryListener;
    class Image;
    class KeyFrame;
    class Light;
    class Log;
    class LogManager;
   class LodStrategy;
   class ManualResourceLoader;
   class ManualObject;
    class Material;
    class MaterialManager;
    class Math;
    class Matrix3;
    class Matrix4;
    class MemoryManager;
    class Mesh;
    class MeshSerializer;
    class MeshSerializerImpl;
    class MeshManager;
    class MovableObject;
    class MovablePlane;
    class Node;
   class NodeAnimationTrack;
   class NodeKeyFrame;
   class NumericAnimationTrack;
   class NumericKeyFrame;
    class Particle;
    class ParticleAffector;
    class ParticleAffectorFactory;
    class ParticleEmitter;
    class ParticleEmitterFactory;
    class ParticleSystem;
    class ParticleSystemManager;
    class ParticleSystemRenderer;
    class ParticleSystemRendererFactory;
    class ParticleVisualData;
    class Pass;
    class PatchMesh;
    class PixelBox;
    class Plane;
    class PlaneBoundedVolume;
    class Plugin;
    class PMWorker;
    class PMInjector;
    class Pose;
    class ProgressiveMeshGenerator;
    class Profile;
   class Profiler;
    class Quaternion;
   class Radian;
    class Ray;
    class RaySceneQuery;
    class RaySceneQueryListener;
    class Renderable;
    class RenderPriorityGroup;
    class RenderQueue;
    class RenderQueueGroup;
   class RenderQueueInvocation;
   class RenderQueueInvocationSequence;
    class RenderQueueListener;
   class RenderObjectListener;
    class RenderSystem;
    class RenderSystemCapabilities;
    class RenderSystemCapabilitiesManager;
    class RenderSystemCapabilitiesSerializer;
    class RenderTarget;
    class RenderTargetListener;
    class RenderTexture;
   class MultiRenderTarget;
    class RenderWindow;
    class RenderOperation;
    class Resource;
   class ResourceBackgroundQueue;
   class ResourceGroupManager;
    class ResourceManager;
    class RibbonTrail;
   class Root;
    class SceneManager;
    class SceneManagerEnumerator;
    class SceneNode;
    class SceneQuery;
    class SceneQueryListener;
   class ScriptCompiler;
   class ScriptCompilerManager;
   class ScriptLoader;
    class Serializer;
    class ShadowCaster;
    class ShadowRenderable;
   class ShadowTextureManager;
    class SimpleRenderable;
    class SimpleSpline;
    class Skeleton;
    class SkeletonInstance;
    class SkeletonManager;
    class Sphere;
    class SphereSceneQuery;
   class StaticGeometry;
   class StreamSerialiser;
    class StringConverter;
    class StringInterface;
    class SubEntity;
    class SubMesh;
   class TagPoint;
    class Technique;
   class TempBlendedBufferInfo;
   class ExternalTextureSource;
    class TextureUnitState;
    class Texture;
    class TextureManager;
    class TransformKeyFrame;
   class Timer;
   class UserObjectBindings;
    class Vector2;
    class Vector3;
    class Vector4;
    class Viewport;
   class VertexAnimationTrack;
    class VertexBufferBinding;
    class VertexData;
    class VertexDeclaration;
   class VertexMorphKeyFrame;
    class WireBoundingBox;
   class WorkQueue;
    class Compositor;
    class CompositorManager;
    class CompositorChain;
    class CompositorInstance;
   class CompositorLogic;
    class CompositionTechnique;
    class CompositionPass;
    class CompositionTargetPass;
   class CustomCompositionPass;

    template<typename T> class SharedPtr;
    typedef SharedPtr<Compositor> CompositorPtr;
    typedef SharedPtr<GpuProgram> GpuProgramPtr;
    typedef SharedPtr<HighLevelGpuProgram> HighLevelGpuProgramPtr;
    typedef SharedPtr<Material> MaterialPtr;
    typedef SharedPtr<Mesh> MeshPtr;
    typedef SharedPtr<PatchMesh> PatchMeshPtr;
    typedef SharedPtr<Resource> ResourcePtr;
    typedef SharedPtr<Skeleton> SkeletonPtr;
    typedef SharedPtr<Texture> TexturePtr;
}

/* Include all the standard header *after* all the configuration
settings have been made.
*/
#include "OgreStdHeaders.h"
#include "OgreMemoryAllocatorConfig.h"


namespace Ogre
{
#if OGRE_STRING_USE_CUSTOM_MEMORY_ALLOCATOR
   #if OGRE_WCHAR_T_STRINGS
      typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, STLAllocator<wchar_t,GeneralAllocPolicy > >   _StringBase;
   #else
      typedef std::basic_string<char, std::char_traits<char>, STLAllocator<char,GeneralAllocPolicy > >   _StringBase;
   #endif

   #if OGRE_WCHAR_T_STRINGS
      typedef std::basic_stringstream<wchar_t,std::char_traits<wchar_t>,STLAllocator<wchar_t,GeneralAllocPolicy >> _StringStreamBase;
   #else
      typedef std::basic_stringstream<char,std::char_traits<char>,STLAllocator<char,GeneralAllocPolicy > > _StringStreamBase;
   #endif

   #define StdStringT(T) std::basic_string<T, std::char_traits<T>, std::allocator<T> >   
   #define CustomMemoryStringT(T) std::basic_string<T, std::char_traits<T>, STLAllocator<T,GeneralAllocPolicy> >   

   template<typename T>
   bool operator <(const CustomMemoryStringT(T)& l,const StdStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())<0;
   }
   template<typename T>
   bool operator <(const StdStringT(T)& l,const CustomMemoryStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())<0;
   }
   template<typename T>
   bool operator <=(const CustomMemoryStringT(T)& l,const StdStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())<=0;
   }
   template<typename T>
   bool operator <=(const StdStringT(T)& l,const CustomMemoryStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())<=0;
   }
   template<typename T>
   bool operator >(const CustomMemoryStringT(T)& l,const StdStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())>0;
   }
   template<typename T>
   bool operator >(const StdStringT(T)& l,const CustomMemoryStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())>0;
   }
   template<typename T>
   bool operator >=(const CustomMemoryStringT(T)& l,const StdStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())>=0;
   }
   template<typename T>
   bool operator >=(const StdStringT(T)& l,const CustomMemoryStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())>=0;
   }

   template<typename T>
   bool operator ==(const CustomMemoryStringT(T)& l,const StdStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())==0;
   }
   template<typename T>
   bool operator ==(const StdStringT(T)& l,const CustomMemoryStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())==0;
   }

   template<typename T>
   bool operator !=(const CustomMemoryStringT(T)& l,const StdStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())!=0;
   }
   template<typename T>
   bool operator !=(const StdStringT(T)& l,const CustomMemoryStringT(T)& o)
   {
      return l.compare(0,l.length(),o.c_str(),o.length())!=0;
   }

   template<typename T>
   CustomMemoryStringT(T) operator +=(const CustomMemoryStringT(T)& l,const StdStringT(T)& o)
   {
      return CustomMemoryStringT(T)(l)+=o.c_str();
   }
   template<typename T>
   CustomMemoryStringT(T) operator +=(const StdStringT(T)& l,const CustomMemoryStringT(T)& o)
   {
      return CustomMemoryStringT(T)(l.c_str())+=o.c_str();
   }

   template<typename T>
   CustomMemoryStringT(T) operator +(const CustomMemoryStringT(T)& l,const StdStringT(T)& o)
   {
      return CustomMemoryStringT(T)(l)+=o.c_str();
   }

   template<typename T>
   CustomMemoryStringT(T) operator +(const StdStringT(T)& l,const CustomMemoryStringT(T)& o)
   {
      return CustomMemoryStringT(T)(l.c_str())+=o.c_str();
   }

   template<typename T>
   CustomMemoryStringT(T) operator +(const T* l,const CustomMemoryStringT(T)& o)
   {
      return CustomMemoryStringT(T)(l)+=o;
   }

   #undef StdStringT
   #undef CustomMemoryStringT

#else
   #if OGRE_WCHAR_T_STRINGS
      typedef std::wstring _StringBase;
   #else
      typedef std::string _StringBase;
   #endif

   #if OGRE_WCHAR_T_STRINGS
      typedef std::basic_stringstream<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > _StringStreamBase;
   #else
      typedef std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> > _StringStreamBase;
   #endif

#endif

   typedef _StringBase String;
   typedef _StringStreamBase StringStream;
   typedef StringStream stringstream;

}

//for stl container
namespace Ogre
{
   template <typename T, typename A = STLAllocator<T, GeneralAllocPolicy> >
   struct deque
   {
#if OGRE_CONTAINERS_USE_CUSTOM_MEMORY_ALLOCATOR
      typedef typename std::deque<T, A> type;   
      typedef typename std::deque<T, A>::iterator iterator;
      typedef typename std::deque<T, A>::const_iterator const_iterator;
#else
      typedef typename std::deque<T> type;
      typedef typename std::deque<T>::iterator iterator;
      typedef typename std::deque<T>::const_iterator const_iterator;
#endif
   };

   template <typename T, typename A = STLAllocator<T, GeneralAllocPolicy> >
   struct vector
   {
#if OGRE_CONTAINERS_USE_CUSTOM_MEMORY_ALLOCATOR
      typedef typename std::vector<T, A> type;
      typedef typename std::vector<T, A>::iterator iterator;
      typedef typename std::vector<T, A>::const_iterator const_iterator;
#else
      typedef typename std::vector<T> type;
      typedef typename std::vector<T>::iterator iterator;
      typedef typename std::vector<T>::const_iterator const_iterator;
#endif
   };

   template <typename T, typename A = STLAllocator<T, GeneralAllocPolicy> >
   struct list
   {
#if OGRE_CONTAINERS_USE_CUSTOM_MEMORY_ALLOCATOR
      typedef typename std::list<T, A> type;
      typedef typename std::list<T, A>::iterator iterator;
      typedef typename std::list<T, A>::const_iterator const_iterator;
#else
      typedef typename std::list<T> type;
      typedef typename std::list<T>::iterator iterator;
      typedef typename std::list<T>::const_iterator const_iterator;
#endif
   };

   template <typename T, typename P = std::less<T>, typename A = STLAllocator<T, GeneralAllocPolicy> >
   struct set
   {
#if OGRE_CONTAINERS_USE_CUSTOM_MEMORY_ALLOCATOR
      typedef typename std::set<T, P, A> type;
      typedef typename std::set<T, P, A>::iterator iterator;
      typedef typename std::set<T, P, A>::const_iterator const_iterator;
#else
      typedef typename std::set<T, P> type;
      typedef typename std::set<T, P>::iterator iterator;
      typedef typename std::set<T, P>::const_iterator const_iterator;
#endif
   };

   template <typename K, typename V, typename P = std::less<K>, typename A = STLAllocator<std::pair<const K, V>, GeneralAllocPolicy> >
   struct map
   {
#if OGRE_CONTAINERS_USE_CUSTOM_MEMORY_ALLOCATOR
      typedef typename std::map<K, V, P, A> type;
      typedef typename std::map<K, V, P, A>::iterator iterator;
      typedef typename std::map<K, V, P, A>::const_iterator const_iterator;
#else
      typedef typename std::map<K, V, P> type;
      typedef typename std::map<K, V, P>::iterator iterator;
      typedef typename std::map<K, V, P>::const_iterator const_iterator;
#endif
   };

   template <typename K, typename V, typename P = std::less<K>, typename A = STLAllocator<std::pair<const K, V>, GeneralAllocPolicy> >
   struct multimap
   {
#if OGRE_CONTAINERS_USE_CUSTOM_MEMORY_ALLOCATOR
      typedef typename std::multimap<K, V, P, A> type;
      typedef typename std::multimap<K, V, P, A>::iterator iterator;
      typedef typename std::multimap<K, V, P, A>::const_iterator const_iterator;
#else
      typedef typename std::multimap<K, V, P> type;
      typedef typename std::multimap<K, V, P>::iterator iterator;
      typedef typename std::multimap<K, V, P>::const_iterator const_iterator;
#endif
   };

} // Ogre

#endif // __OgrePrerequisites_H__


I hope you are able to figure out anything.

Raptorfx
Just popping in
Just popping in
Posts: 2
Joined: Sat Nov 02, 2013 16:35

Re: CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby Raptorfx » Sat Nov 02, 2013 17:00

Hi,

I am having the same issues on Windows 7 using Ogre 1.9 RC2, MinGW with GCC 4.8.1 and CEGUI 0.8.2.

Already tried to look for the second definition but not able to find it yet.

This is my build output:

Code: Select all

[ 64%] Built target CEGUIBase-0
Scanning dependencies of target CEGUIOgreRenderer-0
[ 64%] Building CXX object cegui/src/RendererModules/Ogre/CMakeFiles/CEGUIOgreRenderer-0.dir/GeometryBuffer.cpp.obj
In file included from C:/PDAO2/Framework/Ogre/sdk/include/OGRE/OgreMatrix4.h:32:0,
                 from C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/GeometryBuffer.h:36,
                 from C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:28:
C:/PDAO2/Framework/Ogre/sdk/include/OGRE/OgrePrerequisites.h:324:32: error: conflicting declaration 'typedef class Ogre::SharedPtr<Ogre::Texture> Ogre::TexturePtr'
     typedef SharedPtr<Texture> TexturePtr;
                                ^
In file included from C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/GeometryBuffer.h:32:0,
                 from C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:28:
C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/Renderer.h:57:7: error: 'class Ogre::TexturePtr' has a previous declaration as 'class Ogre::TexturePtr'
 class TexturePtr;
       ^
In file included from C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:28:0:
C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/GeometryBuffer.h:104:26: error: field 'texture' has incomplete type
         Ogre::TexturePtr texture;
                          ^
In file included from C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:29:0:
C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/Texture.h:98:22: error: field 'd_texture' has incomplete type
     Ogre::TexturePtr d_texture;
                      ^
In file included from C:/PDAO2/Framework/Ogre/sdk/include/OGRE/OgreRenderTarget.h:34:0,
                 from C:/PDAO2/Framework/Ogre/sdk/include/OGRE/OgreRenderSystem.h:42,
                 from C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:33:
C:/PDAO2/Framework/Ogre/sdk/include/OGRE/OgreTextureManager.h: In member function 'Ogre::TexturePtr Ogre::TextureManager::createManual(const String&, const String&, Ogre::TextureType, Ogre::uint, Ogre::uint, int, Ogre::PixelFormat, int, Ogre::ManualResourceLoader*, bool, Ogre::uint, const String&)':
C:/PDAO2/Framework/Ogre/sdk/include/OGRE/OgreTextureManager.h:352:3: error: return type 'class Ogre::TexturePtr' is incomplete
   {
   ^
C:/PDAO2/Framework/Ogre/sdk/include/OGRE/OgreTextureManager.h:354:73: error: invalid use of incomplete type 'class Ogre::TexturePtr'
     numMipmaps, format, usage, loader, hwGammaCorrection, fsaa, fsaaHint);
                                                                         ^
In file included from C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/GeometryBuffer.h:32:0,
                 from C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:28:
C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/Renderer.h:57:7: error: forward declaration of 'class Ogre::TexturePtr'
 class TexturePtr;
       ^
C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp: In member function 'virtual void CEGUI::OgreGeometryBuffer::draw() const':
C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:162:52: error: 'const struct CEGUI::OgreGeometryBuffer::BatchInfo' has no member named 'texture'
             d_renderSystem._setTexture(0, true, i->texture);
                                                    ^
C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp: In member function 'virtual void CEGUI::OgreGeometryBuffer::appendGeometry(const CEGUI::Vertex*, CEGUI::uint)':
C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:215:22: error: aggregate 'Ogre::TexturePtr t' has incomplete type and cannot be defined
     Ogre::TexturePtr t;
                      ^
C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:217:45: error: invalid use of incomplete type 'class Ogre::TexturePtr'
         t = d_activeTexture->getOgreTexture();
                                             ^
In file included from C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/GeometryBuffer.h:32:0,
                 from C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:28:
C:/PDAO2/Framework/CEGUI/cegui-0.8.2/cegui-0.8.2/cegui/include/CEGUI/RendererModules/Ogre/Renderer.h:57:7: error: forward declaration of 'class Ogre::TexturePtr'
 class TexturePtr;
       ^
C:\PDAO2\Framework\CEGUI\cegui-0.8.2\cegui-0.8.2\cegui\src\RendererModules\Ogre\GeometryBuffer.cpp:220:26: error: '__gnu_cxx::__alloc_traits<std::allocator<CEGUI::OgreGeometryBuffer::BatchInfo> >::value_type' has no member named 'texture'
         d_batches.back().texture != t ||
                          ^
make[2]: *** [cegui/src/RendererModules/Ogre/CMakeFiles/CEGUIOgreRenderer-0.dir/GeometryBuffer.cpp.obj] Error 1
make[1]: *** [cegui/src/RendererModules/Ogre/CMakeFiles/CEGUIOgreRenderer-0.dir/all] Error 2
make: *** [all] Error 2


Hope somebody already found a solution for this.

Thanks.

Tibec
Just popping in
Just popping in
Posts: 3
Joined: Tue Nov 05, 2013 21:33

Re: CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby Tibec » Tue Nov 05, 2013 21:39

Go to the file cegui\include\CEGUI\RendererModules\Ogre\Renderer.h
and juste remplace on line 54

Code: Select all

class TexturePtr

by

Code: Select all

class Texture;
template<typename T> class SharedPtr;
typedef SharedPtr<Texture> TexturePtr;


It fix the problem for me ;)

Raptorfx
Just popping in
Just popping in
Posts: 2
Joined: Sat Nov 02, 2013 16:35

Re: CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby Raptorfx » Sun Nov 10, 2013 00:59

Yes, indeed fixed it. But now it is running into linker issues which I currently try to figure out for a week now ...
Tried it with boost 1.54 and 1.51, no difference. Libs are there for the linker, so I am not sure where this refernce problems is coming from

Code: Select all

[ 64%] Built target CEGUIBase-0
Linking CXX shared library ..\..\..\..\bin\libCEGUIOgreRenderer-0.dll
CMakeFiles\CEGUIOgreRenderer-0.dir/objects.a(GeometryBuffer.cpp.obj):GeometryBuffer.cpp:(.text.startup+0x1d): undefined reference to `boost::system::generic_category()'
CMakeFiles\CEGUIOgreRenderer-0.dir/objects.a(GeometryBuffer.cpp.obj):GeometryBuffer.cpp:(.text.startup+0x29): undefined reference to `boost::system::generic_category()'
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\CEGUIOgreRenderer-0.dir/objects.a(GeometryBuffer.cpp.obj): bad reloc address 0x29 in section `.text.startup'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [bin/libCEGUIOgreRenderer-0.dll] Error 1
make[1]: *** [cegui/src/RendererModules/Ogre/CMakeFiles/CEGUIOgreRenderer-0.dir/all] Error 2
make: *** [all] Error 2


Here is the CMakeCache.txt with the informations
http://pastebin.com/X7ekbKJN

Would appreciate any help

User avatar
thomas
Quite a regular
Quite a regular
Posts: 64
Joined: Thu Aug 22, 2013 22:11

Re: CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby thomas » Wed Jun 18, 2014 21:47

Any errors while compiling cegui for Ogre 1.9 (at least it worked for me) concerning invalid use of incomplete type or forward declarations can be solved by doing:

#include <OgreXXX.h> where OgreXXX.h is the include which contains the ogre class declaration.

My guess is that Ogre 1.9 moved around some includes, so while some includes were implicitly included into CEGUI before must now be explicitly included.

Mine included:
For cegui/src/RendererModules/Ogre/Renderer.cpp

Code: Select all

#include <OgreFrameListener.h>
#include <OgreViewport.h>
#include <OgreCamera.h>


For cegui/src/RendererModules/Ogre/ResourceProvider.cpp

Code: Select all

#include <OgreResourceGroupManager.h>


and RenderTarget.inl

Code: Select all

#include <OgreCamera.h>
#include <OgreViewport.h>


Also in cegui/src/RendererModules/Ogre/WindowTarget.cpp to fix warning about Viewport

Code: Select all

#include <OgreViewport.h>

User avatar
Kulik
CEGUI Team
Posts: 1382
Joined: Mon Jul 26, 2010 18:47
Location: Czech Republic
Contact:

Re: CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby Kulik » Thu Jun 19, 2014 08:49

@thomas:

Is this still an issue with 0.8.3? I have recently built CEGUI 0.8.3 for Fedora Rawhide with Ogre 1.9 and it built fine.

User avatar
thomas
Quite a regular
Quite a regular
Posts: 64
Joined: Thu Aug 22, 2013 22:11

Re: CEGUI 0.8.2 w/ Ogre 1.9 compilation problems OS X

Postby thomas » Thu Jun 19, 2014 22:41

Kulik wrote:@thomas:

Is this still an issue with 0.8.3? I have recently built CEGUI 0.8.3 for Fedora Rawhide with Ogre 1.9 and it built fine.


I can't claim it's an issue overall, but it was an issue for me when compiling CEGUI 0.8.3 for Ogre 1.9.0 in Windows with MinGW + C::B

Could have been been specific to the compiler or something I did without understanding the actual problem. Thought I'd contribute my solution though in case it helps anyone :)

And thanks for reminding me how much I miss Fedora :cry:


Return to “Help”

Who is online

Users browsing this forum: No registered users and 26 guests