客户正在使用我们的 dll,该 dll 正在创建一个使用开源库的子进程,最终由于调用 LoadLibraryExW() 而失败,返回的最后一个错误是 ERROR_MOD_NOT_FOUND。这发生在 WinXP 32 位上,但不会发生在其他机器上。但是我们知道安装了正确的依赖项集,甚至在同一目录中。
所以我们很自然地想到,使用 Dependency Walker 来查找特定机器上缺少什么依赖项。不幸的是,它没有显示任何缺失,只是一些不是库的直接依赖项的延迟加载警告。根据我使用depends.exe 的经验,它总是揭示缺少的依赖项是什么。
所以在这一点上,我已经把我的头发拉出来试图理解如果所有库的依赖项都存在,为什么我会收到 ERROR_MOD_NOT_FOUND ?使这台机器独一无二的唯一另一件事是它非常安全,因为它由政府使用,但如果我们遇到访问/权限问题,我预计会出现不同类型的错误代码。
我已经构建了一个小的 Win32 可执行文件,它只在所述库上调用 LoadLibraryExW(),当它从与库所在的目录相同的目录中运行时,它会在客户有问题的机器上毫无问题地加载库。
一件事是我们的产品是一个 ActiveX 插件,它启动一个子进程,子进程调用第 3 方库,第 3 方库有问题的 LoadLibraryExW() 调用。那么也许它失败的原因是它正在运行的上下文(例如从浏览器)?
我在'Win32'平台上使用Windows7(64位操作系统)构建了一个dll.不幸的是,当我用C#代码导入这个dll时,遇到:
"
尝试加载具有错误格式的程序HRESULT:0x8007000B
"观察到了
当我为此DLL使用DependencyWalker时,它显示无法找到的IESHIMS.dll和MSVCR110.dll依赖项.
这些dll来自哪里以及为什么我创建的dll对这两个dll有依赖性?Pl帮助我怎样才能解决这个问题?
注意:我在我的C#代码中使用了x86平台.
我有一个dll,我正在使用平台visual studio 2003和操作系统2000进入依赖性walker.我的那个dll找到所有的依赖.
但是当我要打开另一个具有OS-windows7和visual studio 2010的系统时,我发现了dll错误.
GDIPLUS.DLL, GPSVC.DLL, IESHIMS.DLL.
上面列出的3个dll都不见了.当我下载这些dll并将它们放入我的dll所在的同一位置时,我发现下面列出了缺少的dll列表.
API-MS-WIN-CORE-COM-L1-1-1.DLL, API-MS-WIN-CORE-DEBUG-L1-1-1.DLL, API-MS-WIN-CORE-DELAYLOAD-L1-1-1.DLL, API-MS-WIN-CORE-ERRORHANDLING-L1-1-1.DLL, API-MS-WIN-CORE-FILE-L1-2-1.DLL, API-MS-WIN-CORE-FILE-L2-1-1.DLL, API-MS-WIN-CORE-HEAP-L1-2-0.DLL, API-MS-WIN-CORE-HEAP-OBSOLETE-L1-1-0.DLL, API-MS-WIN-CORE-JOB-L2-1-0.DLL, API-MS-WIN-CORE-KERNEL32-LEGACY-L1-1-1.DLL, API-MS-WIN-CORE-LIBRARYLOADER-L1-2-0.DLL, API-MS-WIN-CORE-LOCALIZATION-L1-2-1.DLL, API-MS-WIN-CORE-LOCALIZATION-OBSOLETE-L1-2-0.DLL, API-MS-WIN-CORE-MEMORY-L1-1-2.DLL, API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL, API-MS-WIN-CORE-PROCESSENVIRONMENT-L1-2-0.DLL, API-MS-WIN-CORE-PROCESSTHREADS-L1-1-2.DLL, API-MS-WIN-CORE-REGISTRY-L1-1-0.DLL, API-MS-WIN-CORE-REGISTRY-PRIVATE-L1-1-0.DLL, API-MS-WIN-CORE-STRING-OBSOLETE-L1-1-0.DLL, API-MS-WIN-CORE-SYNCH-L1-2-0.DLL, API-MS-WIN-CORE-SYSINFO-L1-2-1.DLL, API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL, API-MS-WIN-CORE-THREADPOOL-LEGACY-L1-1-0.DLL, API-MS-WIN-CORE-THREADPOOL-PRIVATE-L1-1-0.DLL, API-MS-WIN-CORE-TIMEZONE-L1-1-0.DLL, API-MS-WIN-DOWNLEVEL-ADVAPI32-L1-1-0.DLL, API-MS-WIN-DOWNLEVEL-OLE32-L1-1-0.DLL, API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLL, API-MS-WIN-EVENTING-PROVIDER-L1-1-0.DLL, API-MS-WIN-SECURITY-ACTIVEDIRECTORYCLIENT-L1-1-0.DLL, API-MS-WIN-SECURITY-BASE-L1-2-0.DLL, API-MS-WIN-SECURITY-GROUPPOLICY-L1-1-0.DLL, API-MS-WIN-SECURITY-LSALOOKUP-L1-1-1.DLL, API-MS-WIN-SECURITY-LSALOOKUP-L2-1-1.DLL, API-MS-WIN-SECURITY-PROVIDER-L1-1-0.DLL, API-MS-WIN-SERVICE-CORE-L1-1-1.DLL, API-MS-WIN-SERVICE-WINSVC-L1-2-0.DLL, SYSNTFY.DLL.
可能是因为配置问题,请帮我解决这个问题.
我试图找出我的C ++项目的依赖关系。我有该项目的.dll和.so文件。
我正在尝试使用依赖关系遍历来找出依赖关系。我认为我已经设置了正确的搜索路径。但是,它仍然会出现错误:
API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL: error opening file the system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)
以及其他文件的类似错误:
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL
DCOMP.DLL
GPSVC.DLL
IESHIMS.DLL
Run Code Online (Sandbox Code Playgroud)
我搜索了这些.dll文件,这些文件甚至不在我的计算机上。有人可以帮我吗?
有人可以建议替代依赖漫步者吗?
我使用Dependency Walker wintrust.dll在我的Windows 10 上打开,大约需要40秒!当它打开时,我看到非常奇怪的图片之间的重复通话KERNEL32.DLL和API-MS-WIN-CORE-PROCESSTHREADS-L1-1-1.DLL:
我想这是问题的根源.当我尝试打开自己的dll时,包括wintrust.dll在不同的路径上,最多可能需要10分钟(!)才能打开.
为什么会这样?
我有一个fortran dll,我想知道它依赖于重新分配目的的程序集.
我发现的一件事是依赖性walker没有显示所有依赖关系,即我的程序集依赖于某些dll,但依赖walker没有显示出来.
一个例子是使用intel mkl LAPACK dll的dll,但依赖walker没有显示依赖.
为什么会这样?任何想法如何解决这个问题,还是有其他更可靠的工具,我可以使用?
我试图为QtSql使用QOCI插件,直到我遇到一些问题: 为什么QOCI插件无法正常工作
然而事实证明它是一个库加载问题(至少我是这么认为),所以我决定改变问题的主题,因为它是一个新问题.
我有一个DLL文件(称为qsqloci4.dll)当我尝试使用LoadLibrary加载它时,它失败并且GetLastError返回ERROR_MOD_NOT_FOUND.当我尝试使用LoadLibraryEx加载它并且第三个参数是DONT_RESOLVE_DLL_REFERENCES时,它成功加载(不返回NULL).
所以,我认为这是一个依赖问题.我用依赖walker打开了dll文件,有2个文件无法找到:QtCore4.dll和QtSql4.dll.但是,这些文件位于应用程序的工作目录中,并且成功加载了依赖于这些dll的其他dll文件(例如qsqlpsql4.dll).
其他dll(由依赖walker定位)是:
这是我的问题:给定依赖者walker说:"你有除qt之外的所有dll"并且我确信我有qt dll,还有什么其他原因可以使LoadLibrary失败并使用ERROR_MOD_NOT_FOUND?
相当简单的问题,但我似乎无法在他们的命令行帮助中找到这是否是一个选项。无论如何,是否可以将依赖项步行器的内容直接输出到控制台?
是的,我知道您可以指定它输出到文件,然后我可以解析该文件,但是这需要花费大量时间,我宁愿避免。
我不一定担心它在控制台中看起来有多“丑陋”。我可以通过编程方式快速从输出中搜索我想要的内容,只需知道这是否可行。
如果您能提供任何建议,请先致谢!
dll ×5
c++ ×3
loadlibrary ×2
winapi ×2
command-line ×1
dependencies ×1
dllimport ×1
fortran ×1
qt ×1
unmanaged ×1
windows ×1
windows-10 ×1