2010-06-15 3 views
2

다른 프로젝트에서 사용할 정적 라이브러리로 빌드 중이며 컴파일 중 인 프레임 워크가 있습니다. 라이브러리는 문제없이 완벽하게 작동합니다. 문제는 링크 시간이 라이브러리를 사용하는 프로젝트에서 매우 길어서 같은 프레임 워크의 DLL 프로젝트를 만들 것이라고 생각했기 때문입니다. 저는 베이비 스텝을 시작으로 비주얼 스튜디오를 통해 MFC DLL 프로젝트를 만들었습니다. 이 프로젝트는 다음과 같은 헤더가 있습니다Ogre3D를 포함하는 DLL을 컴파일하면 사용시 어설 션 오류가 발생합니다.

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

#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 중 하나의 주석을 제거하고 DLL을 다시 컴파일하면 DLL을 사용하는 프로젝트에서 이제 어설 션 오류가 발생합니다. 전체 세부 사항은 Ogre 포럼 게시물에서 찾을 수 있습니다. 먼저 질문을 올렸지 만 오우거의 구체적인 질문이 아니기 때문에 여기서도 시도 할 것이라고 생각했습니다. 오우거의 게시물에 대한 링크는 다음과 같습니다

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

가 마지막으로 해결책을 발견

답변

1

사전에 감사 HERE

짧은 설명은 내가 생성 된 DLL이 아닌 MFC DLL을해야한다는 것입니다 DLL을 사용하지 않고도 Visual Studio에서 MFC DLL 템플릿을 제공합니다.