2013-06-18 53 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