tags:

views:

58

answers:

1

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

A: 

Finally found the solution HERE

Short explanation is that the DLL I was creating should be a non-MFC DLL without a DLL main, but Visual Studio gives me an MFC DLL template.

Samaursa