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

目錄

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

二、問題描述

三、摸索解決

四:最終解決


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

PC:Windows  7  64位

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

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

二、問題描述

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

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

運行的時候提示錯誤,“xxx.exe程序異常結束。

三、摸索解決

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

1.是環境變量的問題。加上也無果,沒有解決問題
2.影子創建比較蛋疼,建議去掉。去掉也無果,沒有解決問題

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

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

四:最終解決

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

問題:During startup program exited with code 0xc0000135

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

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

顯而易見這裏需要運行的xxx.exe程序缺少庫文件,是因爲我用到了外部的dll庫,lib庫我是添加到了.pro文件中了的,所以編譯時不會出錯,運行的時候沒有找到這個庫文件就會報錯。

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

解釋:程序所需要的庫文件在 ffmpeg-4.2-win32-shared (需要在官網下載shared類型的包)文件夾下

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

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

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


總結:出現 “程序異常錯誤” 的原因基本上是因爲庫文件的原因導致的,大家可以從庫文件上進行查找原因

無非就是:

1:庫文件的路徑找不到

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

3、庫文件缺失(少添加)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章