DLLImport无法加载DLL

时间:2012-08-08 23:18:12

标签: .net reflection embedded dllimport

我有代码来调用用C编写的DLL。这段代码在我们拥有Windows7的开发人员机器上运行良好。但它在Kiosk上失败,我们有Windows Embedded Standard OS,但有以下异常:“无法加载DLL'xxx.dll':找不到指定的模块。(HRESULT异常:0x8007007E)”。

我的DLL就像以前一样在我的工作目录中。我的项目设置没有改变,工作目录也正确指定。我尝试使用从Kernel.DLL导出的函数设置“DllImport”路径,但它无能为力。有什么可以改变导致这个错误?

1 个答案:

答案 0 :(得分:0)

使用像DependencyWalkier http://www.dependencywalker.com/这样的ome工具加载DLL,并检查DLL需要哪些外部模块。您可能碰巧在W7上有一些Kiosk机器上没有的东西。如果我没记错的话,如果.Net没有找到所有依赖项,它将引发同样的异常。

该工具将允许您查看DLL引用的本机模块。如果您设法在Kiosk上运行该工具,它将报告您所有缺少的依赖项。如果有 - 你有理由。如果没有 - 那么......那么乐趣又开始了:)

顺便说一下。堆栈跟踪中有什么有趣的东西? Btw2。你试过启用fusionlog吗?嗯..嗯..它是原生DLL,所以取决于应该找到原因。我敢打赌它是运行时版本。 AAAh对---这个DLL完全属于你吗?如果你的,那个本机DLL是用DEBUG还是RELEASE模式构建的?如果是debug,则在Release中重新编译。这是一个很常见的陷阱。