天天看點

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案

目錄

一、首先說明出現這個問題的機器配置

二、問題描述

三、摸索解決

四:最終解決

一、首先說明出現這個問題的機器配置

PC:Windows  7  64位

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案

Qt Creater:V4.2.1 Based on Qt 5.8.0(MSVC2015 32bit)

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案

FFepeg:ffmpeg-4.2-win32-dev(關于Qt Creater如何配置FFepeg也比較簡單,大家百度一下即可)

二、問題描述

         在Qt Creater 中的 xxx.pro 檔案中配置添加好FFepeg的路徑後,簡單的添加了FFepeg的一個函數,驗證是否配置成功,鍊路是否打通。

現象:建構(編譯)項目可以正常通過,無警告無錯誤提示

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案

運作的時候提示錯誤,“xxx.exe程式異常結束。”

三、摸索解決

開始也是在網上各種查找,搜了一些關于這個問題的解釋和解決方法,比如說:

1.是環境變量的問題。加上也無果,沒有解決問題

2.影子建立比較蛋疼,建議去掉。去掉也無果,沒有解決問題

3.要各種倒騰添加庫檔案,方法肯定有很多種,大家也必要來回試了(一般主流的方法有兩大類,一類是直接在xxx.pro檔案中添加頭檔案和庫檔案的路徑;一類是點選工程右鍵--->添加庫--->外部庫.....)

4......  等等,總之試了都是沒有結果

四:最終解決

在測試了前面的方法沒有結果時,心想這還沒開始呢,就被這麼個小事情給擋住了,着實可惡!靜下心想了想,可以試一下,在調試模式下會出現什麼現象呢!

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案
Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案
問題:During startup program exited with code 0xc0000135      

大概意思是在啟動程式時退出了(編譯肯定是沒有問題)

分析:既然是啟動運作的時候出現了問題,那我們是不是可以直接到Debug模式下生成的exe路徑下運作程式呢?--->在那裡我們是不是缺少什麼東西導緻程式的奔潰?

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案

顯而易見這裡需要運作的xxx.exe程式缺少庫檔案,是因為我用到了外部的dll庫,lib庫我是添加到了.pro檔案中了的,是以編譯時不會出錯,運作的時候沒有找到這個庫檔案就會報錯。

而提示中提示我們缺少avcodec-58.dll,可是在ffmpeg-4.2-win32-dev 這個檔案夾下沒有找到啊?怎麼辦

解釋:程式所需要的庫檔案在 ffmpeg-4.2-win32-shared (需要在官網下載下傳shared類型的包)檔案夾下

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案

之後将ffmpeg-4.2-win32-shared/bin下的所有檔案拷貝到(build-FFepegForQtFirstTest-Desktop_Qt_5_8_0_MinGW_32bit-Debug)xxx\debug\下(也就是大家的建構目錄)

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案
Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案

之後大家在Qt Creater中編譯運作一下,沒有出現程式異常結束的錯誤,完美解決。

Qt Ctrater 調用FFepeg等外部庫函數提示 程式異常結束 且輸出xxx.exe crashed的完美解決方案

如果這樣還是會出現程式異常結束的話,不妨清除一下錯誤,再編譯運作一下試試。

總結:出現 “程式異常錯誤” 的原因基本上是因為庫檔案的原因導緻的,大家可以從庫檔案上進行查找原因

無非就是:

1:庫檔案的路徑找不到

2:庫檔案添加錯誤(例如32和64位庫檔案使用錯誤,本來是32位環境使用了64位的庫檔案)

3、庫檔案缺失(少添加)