執行exe找不到DLL,執行庫的重要性。
歡迎糾正,大神勿噴。
最開始做專案的時候用的是VC6,使用到中途的時候需要將HBITMAP儲存成jpg格式,這個功能VC6沒有封裝,自己實現起來很麻煩,而且完全沒有必要,使用第三方庫還要學習它的用法,浪費時間。而VC2008自帶CImage類就有這個功能。在網上找了一個方法,使用VC2008將要使用的方法做成DLL,再供VC6的專案使用。用了這個方法,很成功。
但是後來又有了一個問題,程式執行起來在我的電腦上沒有問題,可是換到新的電腦就說找不到這個DLL,事實上明明已經把DLL放進去了。最後終於知道是因為那臺電腦上沒有裝VC++2008的執行庫,所以無法執行vc2008生成的的DLL,安裝完之後就好了。
在安裝執行庫的時候要注意以下幾點:
1.你選擇安裝32位還是64位的執行庫,不在於目標計算機作業系統是32還是64,而在於你的程式是32還是64的,如果你的程式是32位的,那麼即使你的目標電腦是64位作業系統,仍然要安裝32位的執行庫。
2.執行庫是有版本號之分的,有的程式做完後使用MFC安裝專案整合的執行庫,拿到新的電腦上安裝,程式不能執行,同樣是VC++執行庫x86,需要安裝最高版本號的執行庫才能執行。我懷疑是程式中使用了只有高版本執行庫才有的功能,具體是什麼函式或者標頭檔案導致的這個問題現在沒搞清楚。
3.當時有人告訴我在“靜態庫使用MFC”可解決第2點這個問題,我也嘗試了,但是因為使用了std::list,於是彈出了一堆警告,雖然程式也能執行,但還是注意點的好,於是只能給程式配一個高版本號的執行庫了。但是如果沒有這些問題的話,又不想安裝執行庫,還是可以考慮改成“靜態庫使用MFC”這個選項。
歡迎加入QQ群:217010341,大家一起交流學習C++。41