2011/11/03

OpenCV 2.x Memory Leak 문제

OpenCv 2.2 부터인가 배포할 때 .lib 파일과 .dll 파일을 포함해서 배포하고 있는데 Visual C++ 2005 버전은 제외되었다. 그래서 2.3.1버전을 받아서 직접 만들어 사용을 하여야 해서 직접 컴파일을 하여 테스트 했다.



2.2버전을 사용할 때에도 메모리 누수 문제가 발생하였는데 2.3.1버전에서도 여전히 문제가 발생하였다.



메모리 누수 로그 더보기



 원인은 MFC 라이브러리가 로드 되기전에 OpenCV core 라이브러리가 로드되어서 발생하는 문제로 OpenCV의 core 프로젝트 설정에서 use MFC 를 Shared DLL로 설정하고 System.cpp 파일에 아래 내용을 추가해 주면 해결 된다고 한다.(http://tech.groups.yahoo.com/group/OpenCV/message/78198)

#ifdef _DEBUG
// required for including afh.h
#undef _WINDOWS_
#include <afx.h>
// Force linking to MFC.
static BOOL unused = afxTraceEnabled;
#endif





하지만 2.3.1 버전에서는 통하지 않는 것으로 보인다. 

이 문제는 프로젝트의 MFC 사용 설정을 Static 으로 설정하면 되지만 기존의 프로젝트가 Static으로 설정할 수 없는 경우는 소용이 없다.

현재로서는 Release 용 lib와 dll을 사용하거나 무시하는 방법 밖에 없어 보인다. 실제 배포하는 파일을 이용해도 동일한 현상이 발생하는데 왜 수정되지 않는지

Original Post : http://neodreamer-dev.tistory.com/612

No comments :

Post a Comment