C++ 编译包含Ogre3D的DLL时会出现断言错误

C++ 编译包含Ogre3D的DLL时会出现断言错误,c++,ogre3d,C++,Ogre3d,我有一个我正在构建的框架,正在编译成一个静态库,供其他项目使用。这个图书馆工作得很好,没有问题。问题是,对于使用库的项目来说,链接时间非常长,所以我想我会制作一个相同框架的DLL项目。我从小步骤开始,通过VisualStudio创建了一个MFCDLL项目。该项目具有以下标题: /// -------------------------------------------- #ifndef OGRECORE_H #define OGRECORE_H #ifdef OGREFW_EXPORT

我有一个我正在构建的框架,正在编译成一个静态库,供其他项目使用。这个图书馆工作得很好,没有问题。问题是,对于使用库的项目来说,链接时间非常长,所以我想我会制作一个相同框架的DLL项目。我从小步骤开始,通过VisualStudio创建了一个MFCDLL项目。该项目具有以下标题:

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

#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
这就是来源

#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()
 {

 }
}
正如你所看到的,我已经注释掉了食人魔包含的内容。当一个项目使用编译的DLL并构造这个(OgreCore)类时,它工作得非常好。一旦取消对其中一个Ogre includes的注释并再次编译DLL,使用该DLL的项目就会给出一个断言错误。完整的细节可以在食人魔论坛的帖子中找到。我先把这个问题贴在那里,但因为它不是一个真正针对食人魔的问题,我想我也会在这里试试。食人魔帖子的链接是:


提前感谢

终于找到了解决方案

简短的解释是,我创建的DLL应该是一个没有DLL main的非MFC DLL,但VisualStudio给了我一个MFC DLL模板