2014-01-23 44 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引起的。如果這些文件無法找到(重命名或從其目錄中刪除),則軟件運行良好。

由於我與這個插件完全無關,我嘗試重新配置CMakeList for VTK和我的項目,通過刪除路徑來禁用此插件。這並不能解決問題。因此,我認爲這個插件是由QT的某些依賴項調用的。

任何想法來解決這個問題?謝謝。

+1

如果您使用相同的編譯器構建了所有內容,您是否使用INSTALL目標來安裝VTK?如果這樣的話請記住,這可能會限制您可以爲應用程序使用的配置。在發佈應用程序的調試應用程序或調試DLL中使用發佈dll是不安全的。兩者都會導致你有超過1個堆,最終導致你的應用程序因爲堆是獨立的而導致分配或釋放內存的隨機崩潰,並且你不能安全地在一個堆中分配ram並將其釋放到另一個堆中。 – drescherjm

回答

1

最有可能的問題不是由這些插件引起的,這個問題是其他地方引起的,並導致這些插件崩潰。也許你有一個壞的jpeg文件被加載。但很可能你正面臨內存錯誤。你需要在linux下編譯它,並使用valgrind運行,看看發生了什麼。

我希望你用相同的C++編譯器重新編譯了這個項目的所有部分?

+0

「我希望你用相同的C++編譯器重新編譯了這個項目的所有部分?」很重要。 – drescherjm

+0

感謝您的建議。是的,我確實使用相同的編譯器編譯了每個部分,並且非常小心地調試和發佈dll。在軟件崩潰的時候沒有加載jpeg。我同意這可能是一個內存錯誤。只是想知道是否有任何方法可以在Windows中進行追蹤? – user3229896