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: 529
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