当前位置: 首页 > 知识库问答 >
问题:

VB。NET无法加载DLL。找不到指定的模块。当德林波特

红砚文
2023-03-14

我正在我的VB中添加VC库。Net程序,例如:

<DllImport("KMpeg4.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Shared Function KOpenInterface() As System.IntPtr
End Function

我在运行时遇到了错误:

无法加载DLL“KMpeg4”。dll':找不到指定的模块。(来自HRESULT的异常:0x8007007E)

我把这个库放在了所有地方,包括system32,但仍然没有运气,这意味着它缺少KMpeg4的依赖库。dll

所以我运行了依赖步行者,它给了我丢失的lib:

API-MS-WIN-CORE-COM-L1-1-0.DLL  
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-0.DLL  
DCOMP.DLL
GPSVC.DLL  
IESHIMS.DLL

以及糟糕的lnking功能

c:\windows\system32\API-MS-WIN-CORE-THREADPOOL-L1-1-0.DLL
c:\windows\system32\OLE32.DLL
c:\windows\system32\DWMAPI.DLL
c:\windows\system32\IEFRAME.DLL
c:\windows\system32\IMM32.DLL
c:\windows\system32\MFPLAT.DLL
c:\windows\system32\NDFAPI.DLL
c:\windows\system32\USERENV.DLL
c:\windows\system32\UXTHEME.DLL

dependency walker出现以下错误:

警告:未找到至少一个延迟加载依赖项模块。警告:由于延迟负载相关模块中缺少导出功能,至少有一个模块具有未解析的导入。

我已经安装了微软VC2005,2008,2010x86和x64和。NET框架4.

另外,我尝试看看如果KMpeg4.dll弹出使用sys内部进程监视器,但它不加载KMpeg4.dll之前,程序得到错误异常

有没有关于这些lib来自哪个软件包的想法?

或者,如何绕过这个问题?

共有1个答案

弓智明
2023-03-14

Dependency Walker对诊断此问题没有帮助,像这样的DLL只能在运行时找到。复制到system32通常是大锤式的解决方案。除了在64位版本的Windows上,您的项目的平台目标设置为x86(在这种情况下很可能是因为这肯定是一个32位DLL),然后您需要将其敲入c:\Windows\syswow64。

但是不要这样做,您只需要确保DLL与您的项目的EXE存在于同一个目录中。这样做的最佳方式:

  • 右键单击您的EXE项目,添加现有项目
  • 导航到您的KMpeg4.dll副本并选择它
  • 选择添加的项目,将复制到输出目录属性设置为“如果更新,复制”

重新生成后,您将在正确的位置获得DLL的副本。不要忘记将其与项目的可执行文件一起部署,也不要忘记在用户机器上可能需要的运行时支持DLL。

 类似资料: