做项目时,需要用到一个非托管的DLL库,使用.NET的互操作技术可以很方便的调用位于非托管DLL中的
函数。但是在执行时遇到了下面的错误:“Unable to load dll HRESULT: 0x8007007E”。于是马上google,
得到的大部分答案都是可以将要用到的dll文件拷贝到C:/WINDOWS/system32目录下即可。马上试验了一下,
结果还是不行,于是继续google,在MSDN的论坛上发现了这个帖子(http://social.msdn.microsoft.com/Forums/zh-CN/csharpgeneral/thread/6793785a-ec98-4453-a62b-f1a85195ec05?Thread%3A6793785a-ec98-4453-a62b-f1a85195ec05=Microsoft.Forums.Data.Models.Discussion&ThreadViewModel%3A6793785a-ec98-4453-a62b-f1a85195ec05=Microsoft.Forums.CachedViewModels.ThreadViewModel)
The DLL might itself require some other DLL. In case of doubt, use Dependency Walker…
意思是这个dll引用了其他dll,由于找不到它所引用的dll,因此出错。这个帖子的妙处在于他还告诉了我们一
个非常实用的工具Dependency Walker(官方网站:http://www.dependencywalker.com/)。使用它我们可以找到某个dll所依赖的其他dll文件,而且它不但可以检
测传统的dll库,也可以检测.NET下的程序集。
不过,在遇到这种问题的时候,我们首先应该考虑的方法还是将要引用的DLL文件全都放到当前程序文件的
bin目录的Debug下.如果不行,再采用上述方法。
参考:http://www.cnblogs.com/daocaoren/archive/2011/10/31/2229961.html
查找方式:首先到运行路径下找,再到path指定的路径下找