2011-08-23 142 views
1

我正在尝试注册一个公司发送给我的COM DLL,用于与他们的某个设备通话。我以前能够进行注册此计算机上,但前几天就开始抛出错误,所以我注销了它,现在它传递到的regsvr32.exe失败,COM dll不再注册

"The module IRAnalyzerCOM.dll" failed to load 

Make sure the binary is stored at the specified path or debug it to check for problems with the binary or dependent .DLL files 

The specified procedure could not be found 

我试着打开的regsvr32.exe与Depends.exe分析,和分析它,看看有什么错误弹出,而我最终得到的是:

... 
Loaded "IRANALYSERCOM.DLL" at address 0x0000000010000000. Successfully hooked module. 
Unloaded "IRANALYSERCOM.DLL" at address 0x0000000010000000. 
LoadLibraryExW("C:\IRAnalyserCOM.dll", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: %1 is not a valid Win32 application (193). 
Loaded "" at address 0x00000000002A0000. Successfully hooked module. 
Unloaded "" at address 0x00000000002A0000. 

(我坐在它在C:\所以有没有可能有任何空间在路径名问题)。您可能会注意到regsvr32.exe确实似乎尝试加载“”,实际上,depends.exe在模块列表中显示“<空字符串”模块。 (显然无法加载)

此.DLL在另一台桌面上成功注册,并且都运行Windows 7 64位。

+0

您是否尝试过在运行regsvr32 c:\ IRAnalyserCOM.dll之前将当前目录更改为c:\ windows \ system32?你有没有明确比较这台机器上的DLL和另一台机器上的DLL,以确保该文件没有被损坏? –

+0

您是否执行过“dumpbin/imports”来查看二进制文件依赖哪个DLL来加载?那么你的PATH中的所有DLL是什么? – selbie

回答

4

Error: %1 is not a valid Win32 application (193).

此错误可能是一个64位操作系统上,它是告诉你正在使用的regsvr32.exe的版本错误。有两个:c:\ windows \ system32中的64位版本和c:\ windows \ syswow64中的32位版本。大多数COM服务器是32位,所以明确尝试输入c:\ windows \ syswow64 \ regsvr32 yourserver.dll

+0

+1这就是我正要说的! – ewall

+0

谢谢,我不知道这个!精彩的提示。 :) – staticfloat