2014-01-23 3 views
0

Qt 라이브러리 4.8.4, VTK6.0, OpenCV2.4.3을 사용하여 소프트웨어를 개발 중입니다. CMake와 MSVC2010은 프로젝트를 빌드하고 컴파일하는데 사용됩니다.VTK가 QT 플러그인과 충돌 함 qjpeg.dll

릴리스 버전의 경우에만 런타임에 충돌이 발생합니다. 문제는 C : \ Qt \ 4.8.4 \ plugins \ imageformats \ qjpeg4.dll 및 qjpeg4.lib에 의해 발생한다는 것을 알았습니다. 이러한 파일을 찾을 수 없거나 (디렉토리에서 이름을 변경하거나 디렉토리에서 제거 할 수없는 경우) 소프트웨어가 완벽하게 실행됩니다.

나는이 플러그인과 전혀 관련이 없기 때문에 VTake에 대한 CMakeList와 경로를 제거하여이 플러그인을 비활성화하는 프로젝트를 재구성하려고했습니다. 이것은 문제를 해결하지 못합니다. 따라서이 플러그인은 QT의 일부 종속성에 의해 호출된다고 가정합니다.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? 고맙습니다.

+1

동일한 컴파일러로 모든 것을 빌드 한 경우 INSTALL 대상을 사용하여 VTK를 설치 했습니까? 이렇게하면 응용 프로그램에 사용할 수있는 구성을 제한 할 수 있습니다. 디버그 응용 프로그램에서 릴리스 dll을 사용하거나 릴리스 응용 프로그램에서 디버그 dll을 사용하는 것은 안전하지 않습니다. 둘 다 힙을 하나 이상 가지고 있기 때문에 힙이 독립적이어서 한 힙에 램을 안전하게 할당 할 수 없기 때문에 메모리를 할당하거나 할당을 해제하는 임의의 크래시가 발생하게됩니다. – drescherjm

답변

1

대부분이 문제는 해당 플러그인으로 인해 발생하지는 않지만 문제는 다른 곳에서 발생하여 해당 플러그인이 충돌하게됩니다. 어쩌면 당신은 깨진 jpeg 파일이로드됩니다. 하지만 대부분의 경우 메모리 버그가 발생합니다. 리눅스에서 컴파일하고 valgrind를 사용하여 실행 결과를 확인해야합니다.

이 프로젝트의 모든 부분을 동일한 C++ 컴파일러로 다시 컴파일했기를 바랍니다.

+0

"이 프로젝트의 모든 부분을 동일한 C++ 컴파일러로 다시 컴파일했으면 좋겠습니까?" 매우 중요. – drescherjm

+0

제안 해 주셔서 감사합니다. 예, 저는 모든 컴파일러를 동일한 컴파일러로 컴파일하고 디버깅 및 릴리스 DLL에 매우주의해야합니다. 소프트웨어가 충돌 할 때까지 jpeg가로드되지 않습니다. 나는 그것이 메모리 버그일지도 모른다는데 동의한다. Windows에서 추적 할 수있는 방법이 있는지 궁금합니다. – user3229896

관련 문제