本人通過VS2015+Opencv2.4.9的環境撰寫了一個程式。現今到了程式需要打包的環節,我想達到的目標是把我寫的程式在其他沒有安裝Visual studio的Windows系統PC機上,能直接通過EXE檔案運行我的程式。
在網上查到通過元件的方法。我分別通過depends和dumpbin的方法查到exe檔案呼叫的dll檔案,并且把這些檔案放在與exe檔案相同的目錄下,最后我把整個專案拷貝至別的電腦上運行,卻提示“應用程式無法正常啟動0xc000007b”。
試了好多天,查了不少資料,都未能解決,十分苦惱,望幫助!!
uj5u.com熱心網友回復:

上圖
uj5u.com熱心網友回復:
并不是depend看到的所有dll都要拷貝到目標機器,你在目標機器上線考一個exe,然后用depend查看哪些dll是紅色或黃色的,把這些考過去就可以,一直到所有的紅色和黃色dll都解決了應該就可以了。一些系統的dll直接拷貝過去反而會導致呼叫出問題。
uj5u.com熱心網友回復:
安裝VS2015可再發行包將opencv*.dll放在和exe相同檔案夾下。
uj5u.com熱心網友回復:
我嘗試了不放所以opencv相關的dll然后直接打開exe,提示缺少dll檔案,補齊了缺失的dll檔案后則顯示無法正常啟動。
uj5u.com熱心網友回復:
通過多次實驗后發現以下問題(實驗環境是win10/64位的鏡像系統,只安裝了vc_redist)發現的問題:(下面提到的MT/MTd/MD/MDd是指專案屬性->代碼生成->運行庫的選項)
1.單純的C++程式,通過MT/MTd兩種方法編譯EXE并運行成功,不需要補充dll;
2.使用MD/MDd編譯后的exe提示缺少dll,把需要的dll放于exe同目錄下再運行則出現無法正常啟動。此時再對此專案使用MT/MTd重新生成的exe,運行此exe仍然提示缺少dll,補齊dll后同樣提示無法正常啟動。
3.對Opencv專案,直接用MTd/MDd編譯出exe(不知道為什么只能用這兩種方法編譯,其他兩種編譯會出錯),使用MTd時提示缺少2個dll,補齊后提示無法正常啟動;使用MDd后提示缺少4個dll,補齊后也提示無法正常啟動。
目前的個人總結:只要需要另外補充dll的情況都無法正常啟動程式!
求解。
uj5u.com熱心網友回復:
非常感謝您的回答,但是嘗試了您的方法后仍然未能解決問題。如果可以的話,麻煩您看你下此貼5樓我的進一步說明,萬分感謝。
uj5u.com熱心網友回復:
C Run-Time Libraries https://msdn.microsoft.com/en-us/library/abx4dbyh.aspx轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/84208.html
標籤:進程/線程/DLL
