iGraph演算法框架執行出錯及解決方案
阿新 • • 發佈:2019-01-28
1 介紹
我看了一篇論文[1],並向作者要了該論文的原始碼。該演算法框架是以Visual C++ console程式專案的形式提供的原始碼。我想執行一下作者提供的原始碼,雙擊GraphIndexing.sln 檔案進入這個演算法框架專案,我所使用的IDE 版本為VS2010。在VS2010的Solution view下設定啟動專案為CTree,然後Build,能成功,但是當Start without debugging時,程式不能執行,提供的錯誤資訊為圖1:Figure 1: CTree 程式執行後的報錯資訊
既然提示說程式執行時缺少一個動態連結庫檔案(.dll檔案),我的第一個反應就是,搜尋我的電腦上是否存在該檔案。蒐集結果為在以下的三個資料夾中都存在這個檔案:
- ...\iGraphV1\TBB\ia32\vc7.1\bin
- ...\iGraphV1\TBB\ia32\vc8\bin
- ...\iGraphV1\TBB\ia32\vc9\bin
Figure 2: 加入dll 檔案後,CTree 程式執行後的報錯資訊 按照上面的提示資訊在Google 上搜索解決方案,都不能解決問題。很快到了要吃午飯的時間。師弟提示我該吃飯了,於是我和他步行去一飯。在路上我和他聊了這個問題,他也給我了一些建議。在我們吃過免費贈送的湯圓後,我突然想到了問題的解決方案。原因是該專案所依賴的第三方包庫tbb...dll的版本不對,也就是說VS2010 不是對應的資料夾vc9 下的檔案。為了弄清VS 與vc 之間的對應關係,我整理出了上一篇博文《Visual studio IDE 與visual C++之間的對應關係(Correspondence)》,確定出了VS2010 與C10相對應。事實上,在作者提供的原始碼所依賴的第三方包庫TBB 資料夾下就沒有vc10 子資料夾,那該怎麼辦呢?
2 解決方案
- tbbmalloc proxy debug.dll
- tbbmalloc proxy debug.pdb
- tbbmalloc proxy.dll
- tbbmalloc proxy.pdb
特別提示:在使用第三方庫tbb進行專案開發的時候,我們要用tbb提供的.lib檔案和.h檔案,而編譯好自己開發的專案後,執行可執行程式時,才需要dll檔案。這些檔案的地位和作用要弄清楚。