2013-09-26 83 views
2

我使用例如添加VC++的lib在我的VB.NET中的程序:VB.NET无法加载DLL无法找到指定的模块。当dllimport的

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

我在运行时得到了错误:

Unable to load DLL 'KMpeg4.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我已经把这个LIB无处不在,包括system32,仍然没有运气,这意味着它缺少依赖库的KMpeg4.dll

所以我跑的Dependency Walker这给了我丢失的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提供了以下错误:

Warning: At least one delay-load dependency module was not found. Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

我已经安装了Microsoft VC++ 2005,2008,2010 x86和x64以及.Net framework 4.

除了我试试,如果KMpeg4.dll弹出使用sysinternal进程监视器看到的,但它不会加载KMpeg4.dll以前生产程序得到错误异常

从封装的LIB可能来自任何想法?

或者,如何解决这个问题?

+0

您使用的是哪个Windows版本,以及KMpeg4.dll的Windows版本是什么意思?从依赖关系的名称看来,KMpeg4适用于Windows 8 RT。你正在运行Windows 7吗? –

回答

2

Dependency Walker对诊断此问题没有用处,像这样的DLL只能在运行时找到。复制到system32通常是大锤解决方案。除了将64位版本的Windows与项目的Platform目标设置为x86之外,很可能在这种情况下,因为这肯定是一个32位DLL,然后您需要将它打入c:\ windows \ syswow64。

但是不要这样做,您只需确保该DLL与项目的EXE位于同一目录中即可。最好的办法这样做:

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

重建,你现在将在正确的地方有一个DLL的副本。不要忘记将它与您的项目可执行文件一起部署,并且不要忘记它可能需要在您的用户机器上运行的支持DLL。

+0

是的,我试图锤击它在c:\ windows \ syswow64实际上,仍然没有成功 –

+0

最初,这是我所做的“只需要确保该DLL存在于您的项目的EXE相同的目录”,但因为它没有工作我开始变得绝望,并尝试了“锤子”解决方案。我其实第一次完全像你所描述的那样 –

+0

其实我没有选择添加的项目,把Copy to Output Directory属性设置为“Copy if newer”。我已经这样做了,我认为你已经明白了;)我遇到了下一个错误,这是另一回事。干杯。 –

相关问题