查找适用于"The specified module could not be found"的 DLL
finding dll for "The specified module could not be found"
我有一个32位的.Net应用程序winform,它调用C++dll。我们将该应用程序打包到安装程序中,它在至少20台左右的机器上安装并运行良好。该应用程序最初是在Win 7 x64计算机(我的)上开发并运行良好。
然而,当我在我的老板桌面(Win 7 x64)上运行它时,应用程序将不会启动。哦,是的。。。
当我尝试启动应用程序时,我会收到一个带有的JIT对话框
System.IO.FileNotFoundException:找不到指定的模块。(HRESULT:0x8007007E的异常)
当我运行依赖于boss机器上的exe时,它会说应用程序exe是x86,但所有依赖的dll都是x64,并将其标记为错误。当我根据我机器上的应用程序运行时,exe和dll都标记为x86。
这怎么会在机器之间发生变化?安装程序只是以正常方式拆包和复制,在许多其他x64机器上运行良好。。。
很自然,它只会在两个小时后的机器上坏掉,我们即将举办一场贸易展。叹气非常困惑。。。
=====================已解决==============
所以我们修复了它。找到丢失的dll有点棘手。
首先,我们犯了错误,我们运行了错误版本的依赖x64框。因此,它错误地报告该应用程序正在查找x64 dll。如果我们运行正确的版本,我想我们会更早发现这个问题。
为我们解决这个问题的是查看系统内部的过程监视器日志。它记录每一次文件访问和注册表读取。日志很快显示在Direct X 11 dll上读取失败。
事实证明,其他应用程序的前一个安装程序已经安装了DX11 dll的部分。这欺骗了我们的安装程序,它跳过了DirectX 11步骤,所以我们有一个丢失的dll。
谢谢你们的帮助!
这是一个简单的"找不到文件"类型的错误,但有一个非常尴尬的行为,即它不会告诉你什么DLL找不到。它可能是C++DLL,也可能是它可能具有的任何隐式DLL依赖项。像运行时支持DLL一样,通常会遗漏,您可以使用vcredist安装程序来部署它们。或者部署DLL的调试版本,这是不起作用的。
要获得良好的诊断,需要打开加载程序快照和调试器。在没有安装工具的机器上总是很难做到。SysInternals的ProcMon实用程序是一个很好的选择,你会看到程序在搜索DLL。尽管你会淹没在它生成的跟踪数据量中。从轨迹的底部向后工作。
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- OpenCV Android C++ imwrite not found
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- 为什么我会" void value not ignored as it ought to be"?
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- _BitScanForward64 can not be found
- 使用自定义 nodejs 插件时的"The specified module could not be found"
- Boost.Python 和导入 dll,"The specified module could not be found"
- 查找适用于"The specified module could not be found"的 DLL
- g++ cannot be found
- 10 手机:"The specified module could not be found. (Exception from HRESULT: 0x8007007E)" :空
- Microsoft Visual Studio - 'The build tools for v140 cannot be found'
- WP8.1 发布内部版本异常的原因:"System.IO.FileNotFoundException: The specified module could not be found" ?
- -lglut32 cannot be found
- Windows XP 上的"Unable to load DLL ... The specified procedure could not be found" C++
- visual studio 2012 c++ windows.h cannot be found
- 窗口加载菜单错误: "The specified resource name cannot be found in the image file."
- NetUserSetInfo: "User name could not be found"