将32位COM DLL注册到64位Windows 7

时间:2010-08-09 12:11:36

标签: dll windows-7 com

我有一个32位COM组件DLL,这个DLL是用Delphi编写的。 这是一个Win32 DLL。 我想在.NET平台上的Visual C#项目中使用这个DLL。

我无法在项目中添加对此DLL的引用。 我尝试在Windows 7 64位中以管理员身份在命令提示符中注册它,但是我收到此错误:

  

检查模块是否与regsvr32.exe的x86(32位)或x64(64位)版本兼容。

首先我将DLL文件放到windows / system32文件夹中。然后我以管理员身份打开命令提示符。我写regsvr32 huginalpha.dll并执行此命令。但是我得到了错误。我该怎么办?

10 个答案:

答案 0 :(得分:52)

问题可能是您尝试使用64位版本的regsvr32注册32位库。 See this KB article - 您需要从windows \ SysWOW64为32位库运行regsvr32。

答案 1 :(得分:29)

对于Windows 64位平台中的32位DLLS:

  1. 将whatever.dll复制到c:\windows\sysWOW64\
  2. 打开CMD提示AS管理员(非常重要)
  3. 在CMD窗口中:

    1. CD c:\windows\sysWOW64\
    2. regsvr32 whatever.dll
    3. 然后,您将在32位dll上执行32位regsvr(c:\windows\sysWOW64\regsvr.exe

答案 2 :(得分:4)

我相信,现在情况发生了变化。在我的 Win 2008 R2 框中,我能够使用64位regsvr32注册32位dll,因为64位版本可以检测目标位数并从%SYSWOW%文件夹中生成新的32位regsvr32

参考:Registering a 32 bit DLL with 64 bit regsvr32

答案 3 :(得分:2)

http://onerkaya.blogspot.com/2013/03/register-com-dll-on-windows-64-bit.html

由于以下错误,检索具有CLSID {...}的组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

如果你试试这个;

c:\ windows \ system32 \ regsvr32.exe<文件名> .dll

你仍然可以接受这个例外。所以IIS池高级设置,启用32位应用程序:true;)

答案 4 :(得分:2)

要在Windows 7 32位上注册comm .dll或.ocx,请执行以下操作:

将.dll或.ocx复制到c:\windows\system32 在“运行”菜单中键入cmd,它将搜索cmd.exe,右键单击并单击Run as Administrator

它会在c:\windows\system32

显示提示

输入

regsvr32 ocxname.ocx注册.ocx

输入regsvr32 dllname.dll来注册.dll

答案 5 :(得分:0)

将dll放在system32或syswow32目录中,并使用适当的regsvr32进行注册。 虽然它没有注册错误,但我重新启动了我的WIN 7 64并且我的vb应用程序加载了dll就好!!

答案 6 :(得分:0)

如果问题未解决,则在使用regsvr32的SysWoW64版本时,请确保所有库依赖项具有相同的原理。例如,

regsvr32 lib_x86.dll无法注册库,并且   %SystemRoot%\SysWow64\regsvr32 lib_x86也失败了,尝试将lib_x86加载到Dependency Walker应用程序以查看完整的依赖项列表。如果任何项目具有64位archetecture,这就是为什么regsvr32无法加载32位库的原因。

答案 7 :(得分:0)

对于两个版本的RegSvr32(32位和64位),我收到错误“模块可能与此版本的Windows兼容”。我试图在Server 2008 R2(x64)中注册为XP(32位)构建的DLL,并且没有一个Regsr32解决方案适用于我。但是,在适当的.Net中注册程序集对我来说非常合适。 C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ RegAsm.exe

答案 8 :(得分:0)

以下链接保存了当天

https://msdn.microsoft.com/en-us/library/ms229076(VS.80).aspx

使用上述链接中指定的相关RegSvcs

C:\ WINDOWS \微软。 NET \ Framework \ v4.0.30319 \ RegSvcs.exe .... \ Shared \ Your.dll /tlb:Your.tlb

答案 9 :(得分:-1)

尝试在Framework64上运行它。

示例:

  • 32位

    C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase 
    
  • 64位

    C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase