1.問題的出現 自己之前寫了一個MATLAB2010b與VC++2010混編的小程式,起初程式還能正常運作(就是總是會出現一些潛在的異常警告)。後來因為電腦藍屏,系統恢複到了以前的正常運作狀态,結果程式出現了“mclmcrrt7_14.dll”找不到的編譯錯誤,按照網上給出的解決方法,于是将MATLAB中的這個DLL拷到C:\Windows\SysWOW64目錄下,重新編譯通過,但結果是程式運作中斷,原因是mclInitializeApplication和相應的庫初始化函數調用失敗,查找了大料資料和排查了各種情況依然沒有找到問題所在,直到重新安裝一個MATLAB2012b。
2.問題分析 在調用在MATLAB2012b中編譯生成的DLL時,程式能夠正确執行,在VS輸出視窗發現程式能夠自動尋找到并加載MATLAB安裝目錄中的mclmcrrt8_0.dll,是以,這裡的問題很可能是之前程式的DLL加載路徑發生變化,而導緻無法正常地調用相關的DLL,這裡關鍵是如何恢複最初的指定加載路徑。
3.問題原因及解決方法 通過檢視系統環境變量問題發現新安裝的MATLAB2012b中有兩個目錄寫進了系統環境變量的Path中,于是嘗試也将MATLAB2010b中的bin目錄和runtime\win32目錄寫入Path中,關閉工程重新打開後再運作,從調試輸出視窗中看到程式加載了MATLAB中相關的DLL,程式又恢複到了原來的狀态能夠正常運作了,這個困擾并折磨了自己一個多星期的詭異問題,原來是系統環境變量的問題!