2011-11-19 222 views
4

在我的笔记本电脑,在那里我开发WPF应用程序,一切工作正常,调试和启动的.exe程序。无法加载DLL“MYDLL.DLL”:指定的模块找不到

我的应用程序使用本机DLL,为解决这个问题,参考我斌/调试(发布)文件夹中添加DLL。我访问它使用的DllImport这样的:

​​

问题是,当我尝试到另一台PC上运行.exe程序,当我需要访问它崩溃DLL。我做一个手柄记录任何未处理的异常,并出现以下错误:

无法加载DLL“xptodll.dll”:指定的模块无法找到 。从HRESULT异常:0x8007007E)

中的bin/debug目录具有xptodll.dll和应用文件:.exe文件,。应用,.exe.config,.exe.manifest,.PDB。

也许这是很重要的,在xptodll.dll与硬件交互,但为什么也不会转回去它必须在两台机器上相同的行为?

+0

您是为x86还是x64编译?您的笔记本电脑和其他电脑的操作系统位数是否不同? 64位exes无法加载32位DLL,而硬件接口DLL通常不能用AnyCPU等进行管理和写入。 –

+1

你不能在另一台机器上获得你的DLL的调试版本,它不会有可用的CRT调试版本。只部署发布版本。并部署它需要运行的DLL:http://www.microsoft.com/download/en/details.aspx?id=5555 –

+0

,我必须安装在每一台机器的vC++ 2010我安装的应用程序? 为什么VisualStudio在创建安装项目时不会捕获依赖关系?只检测.net依赖.... –

回答

15

有可能是一些进一步的依赖是失败的。我的猜测是,xptodll.dll本身依赖于在失败的机器上缺少的其他库。 xptodll.dll的文档应该说明需要什么依赖关系。如果文档没有明确说明丢失的内容,则可以使用Dependency Walker自己诊断问题。

+1

好,缺少一个依赖项,IEShims.dll。现在将该dll复制到bin/debug文件夹,问题就解决了吗? –

+0

你的问题解决了吗? –

+0

是的,它在.exe文件夹中放置更多4个Windows dll后似乎运行正常。这是解决方案吗?有没有其他方法来解决这个问题? –

2

另一个问题可能是(旁边的这一切“摆在正确的位置的DLL”),如果DLL是使用Visual Studio,例如创建。 Visual Studio 2012也必须安装VCRedistributable for 64位(vcredist_x64.exe),这是Visual Studio提供的。

相关问题