Compiling a DLL which includes Ogre3D gives an assertion error when used

Posted by samaursa on Stack Overflow See other posts from Stack Overflow or by samaursa
Published on 2010-06-15T23:10:36Z Indexed on 2010/06/16 0:12 UTC
Read the original article Hit count: 489

Filed under:
|

Hi,

I have a framework that I am building and is being compiled into a static library to be used by other projects. The library works perfectly without issues. The problem is that the link time is very long for the projects that use the library so I thought I will make a DLL project of the same framework. I started with baby steps and created an MFC DLL project through visual studio. The project has the following header:

 /// --------------------------------------------

#ifndef OGRECORE_H
#define OGRECORE_H

#ifdef OGREFW_EXPORT
#define OGREFW_DLL __declspec(dllexport)
#else
#define OGREFW_DLL __declspec(dllimport)
#endif

class OgreRoot;

namespace OgreFW
{
 class OGREFW_DLL OgreCore// : public OIS::KeyListener, public OIS::MouseListener
 {
 public:

  OgreCore();
  ~OgreCore();

 };
};

#endif // OGRECORE_H

and this is the source

#include "stdafx.h"

#include "OgreCore.h"
//#include "Ogre.h"
//#include "OgreRoot.h"
//#include "OgreRenderWindow.h"
//#include "OgreLog.h"
//#include "OgreLogManager.h"
//#include "OgreOverlay.h"
//#include "OgreViewport.h"
//#include "OgreRenderWindow.h"
//#include "OgreFrameListener.h"
//#include "OgreWindowEventUtilities.h"
//#include "OgreSceneNode.h"
//#include "OgreEntity.h"
//#include "OgreManualObject.h"
//#include "OgreMeshManager.h"
//#include "OgreConfigFile.h"
//#include "OgreOverlayContainer.h"
//#include "OgreOverlayManager.h"

namespace OgreFW
{

 OGREFW_DLL
 OgreCore::OgreCore()
 {


 }

 // ------------------------

 OGREFW_DLL
 OgreCore::~OgreCore()
 {

 }
}

As you can see I have commented out Ogre includes. When a project uses the compiled DLL and constructs this (OgreCore) class, it works perfectly fine. As soon as uncomment one of the Ogre includes and compile the DLL again, the project that uses the DLL now gives an assertion error. The full details can be found here in the Ogre forum post. I posted the question there first but since its not really an Ogre specific question I thought I will try here as well. The link to the Ogre post is:

http://www.ogre3d.org/forums/viewtopic.php?f=2&t=58403

Thank you in advance

© Stack Overflow or respective owner

Related posts about c++

Related posts about ogre3d