2013-06-18 81 views
11

我已經構建了一個C++ DLL來使用點網絡。當我運行程序時,出現錯誤,找不到dll。DLL缺少Windows 7文件的依賴關係

DLL是有 - 但我用的Dependency Walker檢查它 - 得到了以下內容:

API-MS-WIN-CORE-COM-L1-1-0.DLL 
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL 
API-MS-WIN-CORE-WINRT-L1-1-0.DLL 
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL 
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL 
API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL 
DCOMP.DLL 

Error opening file. The system cannot find the file specified. 

我做了搜索 - 顯然這是Win 7的文件的d我的Windows 7 - 但沒找不到他們。

我該怎麼辦?

我使用VS2010,Windows 7的

+0

是你的DLL需要它還是需要它間接?缺少哪些進口產品? –

+0

我認爲這是間接的。該DLL依賴於佳能SDK。代碼使用SDK作爲C++庫,可以工作 - 但是我創建的dll有問題導出到dot net的功能。 – Thalia

+8

這些文件實際上存在,你只是看不到它們。依賴沃克已經很久沒有維護,它可以在現代Windows版本上做適當的工作。使用SysInternals的ProcMon,你會看到它搜索DLL並沒有找到它。 –

回答

10

的Dependency Walker(從這裏開始:http://www.dependencywalker.com/)增長過時了。雖然它在win7/win8上運行,但它無法從它們檢測到正常的DLL。如果你打開最新版本2.2.6000的'about'標籤,你會發現它是在2006年10月29日建立的。驚訝它的作品。

您可以在多個位置獲得流程監控工具。我從這裏抽取我的:https://technet.microsoft.com/en-us/sysinternals/bb896645

一旦你得到它,你可以添加一個過濾器'程序名是'然後運行你的程序。你會看到加載的東西,無法加載等。結果並不像你想的那麼簡潔,但是當一些失敗時,它會被列出來。

+0

謝謝你的回答,這在技術上已經由Hans Passant在他的評論中得到了回答。 – Thalia

+1

是的,但你不能用評論關閉問題。所以,我想我會讓社區知道,我試過碰到同樣的問題,嘗試了評論,它的工作,所以我張貼了一個答案,以明確表示評論是正確的。 – LawfulEvil

+0

Dumpbin也很方便http://stackoverflow.com/a/28304716/1272428 – rluks