windows環境變量PATH順序的重要性


 

  PATH是路徑的意思,PATH環境變量中存放的值,就是一連串的路徑。不同的路徑之間,用英文的分號間隔開。系統在執行用戶命令時,若用戶未給出絕對路徑,則首先在當前目錄下尋找相應的可執行文件、批處理文件等。若找不到,再依次在PATH保存的這些路徑中尋找相應的可執行程序文件(windows環境變量的查找順序是按照文件的錄入順序從前往后尋找的,最前面一條的優先級最高,如果找到命令就不會再向后找了)。

  在我身上發生的事讓我覺得PATH順序的重要性:之前在做圖像處理時,使用了opencv2.4.10,由於使用的是vs2013進行編譯,所以在PATH中填入的是opencv中的vc12/bin;后來因為使用了一款較舊的工業相機,它提供的庫最新只能支持到vs2010,於是乎我就下載了vs2010,但還是使用vs2013進行編譯(可以在vs2013中選擇平台工具集為vs2010,而不必再vs2010中重建工程),在vs2013中把用到的opencv庫鏈接的lib文件改為了vc10/lib下的,再將vc/bin目錄加入到PATH環境變量的最末尾。結果編譯后沒問題,運行生成的exe就奇奇怪怪的錯,大致的意思是你使用的XXX在堆中沒有釋放之類的(英文不好哎。。。)就覺得很奇怪,之前用vs2013版本的時候不會出現這些錯誤的。瞎折騰了很久,最后在PATH中把vc12/bin刪掉,才成功地運行。

  然后我就在想,是不是系統在執行opencv相關的命令時,在vc12/bin下找到相應的命令后(vc12/bin和vc10/bin下的命令應該是同名的),就不往下繼續找了。於是,我再把vc12/bin加回來,放在了vc10/bin的后面,編譯后運行,也成功了,這就印證了我想法的正確。

  在此做個記錄,給自己提個醒~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM