问题标签 [dependency-walker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Dependency walker 中的 C++ Dll 显示 IESHIMS.dll 和 MSVCR110.dll
我有一个我在'Win32'平台的Windows7(64位操作系统)中构建的dll。不幸的是,当我在 C# 代码中导入这个 dll 时,我遇到:
"
试图加载格式不正确的程序 HRESULT: 0x8007000B
“被观察到
当我对这个 DLL 使用 DependencyWalker 时,它显示找不到 IESHIMS.dll 和 MSVCR110.dll 依赖项。
这些 dll 来自哪里以及为什么我创建的 dll 依赖于这两个?请帮助我如何解决这个问题?
注意:我在 C# 代码中使用了 x86 平台。
.net-4.0 - K32EnumProcessModules 导致“无法加载由 {dll} 导入的过程”
我有一个应用程序依赖于我组织中其他人构建的几个库,其中一个已停止工作。我在命令行中收到此错误:
我打开 Dependency Walker 试图找出问题的根源,尽管我应该说我是 Dependency Walker 的新手,我真的不知道自己在做什么。这是我在日志窗口中看到的内容:
这似乎很简单,除了:
- 由于我对 DW 不熟悉,我似乎无法找到这个错误实际上指的是哪个模块
- 旧版本应用程序附带的同一个 DLL,仍然有效,在 Dependency Walker 中显示相同的内容
我发现新旧 DLL 之间的唯一区别是 KERNEL32.DLL 在较新的 DLL 中显示为红色,而函数 K32EnumProcessModules 显示为红色(未导出)。对于旧 DLL,这个相同的函数根本不会出现(绿色或其他)。
到目前为止总结一下:一个 DLL 有效,另一个无效;在 Dependency Walker 中两者都显示为“坏”,但只有一个函数 K32EnumProcessModules 显示为不好。我不知道这个函数是否是导致“未解决的导入”错误的原因,并想了解一下。
我认为可能导致此问题的唯一更改是将运行时从 .NET 2.5 升级到 .NET 4。此升级是出于与此 DLL 无关的原因进行的,不应影响它:DLL 确实不要对高于 2.5 的 .NET 组件进行任何调用,并且我组织中使用同一库的其他人报告说它在 .NET 4 上运行良好。
我意识到我提供的信息很少,主要是因为我不确定哪些信息可以帮助解决这个问题。如果您希望我进行测试以了解更多信息,请告诉我。
c# - 在 C# windows 应用程序中使用 C++ DLL:出现错误“找不到入口点”
我不熟悉在 C# 中使用 C++ 库以及一般的 C++ 编程。我有一个从 C++ 代码构建的 DLL,我认为它是一个“托管”代码,因为 DLL 的名称是“TestManaged.dll”。我不是 100% 确定 dll/C++ 代码是托管还是非托管。
我想在我的C# windows forms application
代码中使用这个 DLL 的类和方法。此 DLL 中有多个类。当我在这些类中检查这些类和方法时Object Browser
,它们都有Public
标识符。
到目前为止,我已将此 DLL 添加到我对 C# 应用程序代码的引用中。我会在我的问题中讨论三个类:Product
, ReqStatus
, ProductData
。我可以为这个 DLL 的各种类创建一个对象,如下所示。
在这个 DLL 中调用了另一个类ProductData
,我可以得到这个类的 C++ 代码,如下所示。在这种情况下,在 C# 中ProductData
显示为类Object Browser
,因为它实际上是 C++ 代码中的结构。我不确定这对回答我的问题是否重要(最后)。
以下是定义ProductData
struct - ProductData.h
file 的 C++ 代码。
以下是定义ReqStatus
枚举ReqStatus.h
文件的 C++ 代码。我在我的 C# 代码中创建了相同的枚举,但没有指定标识符。
现在,我想调用两种方法,但两者都有问题:
方法 1:是类getProductData
内部的方法,Product
它接受ProductData
类型对象作为参数并返回ReqStatus
C++ 中的枚举类型。下面是gerProductData
方法的声明(如 中所示Object Browser
):
相同方法的 C++ 声明是:(实际方法太长,因此只给出声明):此方法在Prodcut.cpp
文件内
PLATFORM_PTR 定义如下Platform.h
方法 2:是类getConnected
内部的一个方法,Product
它接受一个字符数组(我不确定)和一个ProductData
类型的对象作为参数,并返回ReqStatus
C++ 中的枚举类型。下面是getConnected
方法的声明(如 中所示Object Browser
):
相同方法的 C++ 声明是:(实际方法太长,因此只给出声明):此方法在Prodcut.cpp
文件内
C++ 代码调用方法如下:
getProductData
方法内部有对方法的内部调用getConnected
。
我的 C# 代码如下,我在两个方法调用中都遇到了错误:我在下面的代码片段的同一行中放置了错误。两种方法都是独立的。它只是从C++ 代码中的方法getProductData
调用。getConnected
我想检查我是否可以单独调用两者。
对于错误 1,我尝试了 StackOverflow 和其他论坛上各种文章的解决方案,但无法解决。仅供参考,我尝试如下更改“SomePortCOM”,但它不起作用。
更新:此代码现在可以正常工作,我没有看到错误 1(无效参数)。现在,我只需要摆脱错误 2(保护级别错误)。请提供任何建议。谢谢你。
对于Error2,我搜索了很多博客,发现可能的解决方案之一是使用DLLImport,我也尝试过,但遇到以下问题:
DLLImport 的 C# 声明:
我从我的 C# 代码中调用这个函数如下:
但是,我收到Entry point not found
错误。我尝试运行 dumpbin 函数以获取此 DLL 导出的函数列表。但是,我没有看到任何功能。而只是一个随机输出,如下所示。
更新:此外,我没有通过 Dependency Walker 在此 DLL 中看到任何方法。现在,我得到了 C++ 的源代码。但我对 C++ 编码相当陌生。如果需要对 C++ 代码进行任何更改,请给出指示。
问候, 鲁米特
winapi - LoadLibraryExW() 失败,最后一个错误是 ERROR_MOD_NOT_FOUND,但没有缺少依赖项?
客户正在使用我们的 dll,它正在创建一个使用开源库的子进程,最终由于调用 LoadLibraryExW() 而失败,返回的最后一个错误是 ERROR_MOD_NOT_FOUND。这发生在 WinXP 32 位上,但不在其他机器上。但是我们知道安装了正确的依赖集,甚至在同一个目录中。
所以我们很自然地想到,使用 Dependency Walker 来查找特定机器上缺少哪些依赖项。不幸的是,它没有显示任何缺失,只是一些不是库的直接依赖关系的延迟加载警告。在我使用depends.exe 的经验中,总是揭示缺少的依赖项是什么。
所以在这一点上,我已经把头发拉出来试图理解如果所有库的依赖项都存在,为什么我会得到 ERROR_MOD_NOT_FOUND ?使这台机器独一无二的唯一另一件事是它非常安全,因为它被政府使用,但如果我们遇到访问/权限问题,我预计会出现不同类型的错误代码。
我已经构建了一个小的 Win32 可执行文件,除了在所述库上调用 LoadLibraryExW() 之外什么都不做,当它从与库所在的相同目录运行时,它会在客户有问题的机器上毫无问题地加载库。
一件事是我们的产品是一个 ActiveX 插件,它启动一个子进程,子进程调用第 3 方库,第 3 方库调用有问题的 LoadLibraryExW()。所以也许它失败的原因是它正在运行的上下文(例如来自浏览器)?
python - How to view tree of library files loaded at runtime by Python program in Linux?
In Windows, the Dependency Walker tool shows a tree of DLLs that is loaded by an executable.
In a similar way, is it possible to know the tree of all the shared libraries (*.so
) that are loaded by a Python program when I run it in Linux?
qt - 从依赖步行者创建图书馆档案?
一点背景: 我正在创建一个基于共享库的 QT 应用程序。我必须分发相同的。我有很多 dll 可以共享,并且正在使用依赖 walker 工具。我对我的 QT 应用程序进行了完整的分析,Dependency walker 正确地识别了所有着色库。
现在我的问题: 由于依赖walker知道所有dll的路径,是否有任何选项可以通过要求dependency walker将所有dll复制到一个文件夹左右来制作捆绑包。我在谷歌做了一些研究,没有找到。?
任何人都可以请指导我还是有任何其他工具可以做到这一点?
c++ - (Dependency Walker)缺少函数的显式类型
为菜鸟的错误提前道歉。这是我在这里的第一个问题。首先,一些背景:
我正在尝试为使用依赖项walker 的程序创建一个模块,以在我没有lib 或任何源代码的.dll 中查找C++ 函数。您也可以假设我无法从原始开发人员那里获得支持。基本上,我检查了另一个访问它的文件,以查看使其工作的最小功能。这是输出的未修饰名称的示例:
前两个函数显然采用 float 或 void 并返回 float 或 void。我得到了一个类似的功能,使用类似的东西:
所以这些都不是问题。
现在,列表中的第三个看起来像另一个接受 void 的函数,但它没有明确的返回类型。这是否意味着我应该只使用隐式类型,它是无效的,还是不是真正的函数?如果不是,那是什么?
我不知道如何处理第四个。甚至可以在没有关联的 .h 文件的情况下处理吗?
我环顾四周,但找不到任何关于当函数看起来不像具有显式返回类型的普通函数时该怎么做的信息。尽管使用了与在类似 .dll 中工作的函数基本相同的代码,但当我在这里尝试使用函数 #2 时(我真的只需要函数 #2),我仍然遇到访问冲突崩溃。所以我猜测 .dll 需要更多信息或需要先初始化一些东西,这就是为什么我对列表中的其他内容感兴趣。
我意识到这是一个复杂的问题,所以可能不会有一个“正确答案”的解决方案来让它工作,但是如果我犯了任何明显的错误,或者有任何关于如何解决问题的一般性建议(甚至依赖walker的替代品),让我知道。
c# - Visual Studio System.DllNotFoundException(“无法加载 DLL 'cbw32.dll'”消息)
大家早上好,
我是 C# 新手,我必须更新一个已经开发的应用程序,我打算在其中添加一些新功能。我已经在 Visual Studio 2012 中打开它并重建它,显然没有错误。当我运行它时,GUI 显示正确,但是当我启动应用程序时出现错误:
MccDaq.dll 中出现“System.DllNotFoundException”类型的第一次机会异常 MccDaq.dll 中出现“System.DllNotFoundException”类型的未处理异常附加信息:无法加载 DLL“cbw32.dll”:指定的模块无法成立。(来自 HRESULT 的异常:0x8007007E)
这两天我一直在寻找解决方案,但我没有找到任何解决方案。在许多其他人中,我发现了这个线程(Unable to load DLL (Module could not be found HRESULT: 0x8007007E)),不幸的是我没有运气。事实上,在搜索上述 DLL(“cbw32.dll”)时,我无法在文件中的任何位置找到它。此外,正如线程中所指出的,我已经安装了 Dependency Walker,并分析了“MccDaq.dll”(发生 System.DllNotFoundException 的文件),其中再次出现错误:
错误:发现具有不同 CPU 类型的模块。警告:由于延迟加载依赖模块中缺少导出功能,至少有一个模块存在未解析的导入。
谷歌搜索带来的新东西很少或没有什么新东西,除了很明显,我在几个 DLL 中的 CPU 架构存在问题,所以我在这里。我必须再次强调我是 C# 新手,所以这里出现一些新手错误也就不足为奇了。不过,这是在 Visual Studio 中触发错误的代码块:
这里可能很重要的另一个细节是这个应用程序是在大约 4.5 年前制作的,所以我猜它必须使用 Visual Studio 2008 进行编程。关于这一点,我在项目属性中更改了“目标” Framework:" 到 .NET Framework 3.5,同样没有成功:行为没有改变。
最后,我找到了许多不同的方向,这让我感到困惑。如果有人能就此启发我,我将不胜感激。
dependency-walker - 正确使用 Dependency Walker (depends.exe)
我想检查我是否正确使用了 Dependency Walker。我制作了免费分发的简单实用程序,我只是想确保它们在其他 Windows 机器上正确运行。(我是小规模的;我没有单独的清洁机器进行测试。)
- 项目清单
- 将 Dependency Walker 配置为忽略我的 PATH,尽管“选项”->“配置模块搜索顺序...”,然后从搜索顺序中删除我的路径。
- 在 Dependency Walker 中打开可执行文件。
- 忽略这些似乎不可避免的警告“警告:未找到至少一个延迟加载依赖模块。警告:由于延迟加载依赖模块中缺少导出功能,至少一个模块具有未解析的导入。”
- 如果没有进一步的投诉,我认为我的应用程序应该可以在另一台机器上运行。
那应该工作吗?
dll - 即使 Dependency Walker 说它在那里也找不到入口点
启动我的应用程序后,它抱怨找不到入口点 glIsQuery。所以我使用 Dependency Walker 来调试这个问题。
父导入函数表确实显示缺少“glIsQuery”,如下所示
但是,Export Function List 也显示该符号存在(我也使用了 dumpbin 来验证这一点)
有什么线索吗?