- Windows 10
- Windows 7
- Windows 8
- Windows 8.1
- Windows Server 2008
unread,
Jul 26, 2016, 4:41:37 PM7/26/16
to
Having a problem with a standard, VB6 ActiveX dll on Windows 7 32 bit machines.
I am unable to register the dll with the above message. This
always used to work fine and have no idea why this suddenly has changed. Running regsvr32 as admin makes no difference. On a Windows 7 machine at home, which is 64 bit all works fine. I tried with the full path to regsvr32.exe (C:\Windows\System32\) and no difference. Done a lot of Googling but no progress and maybe somebody has some idea what could be the problem here.
RBS
unread,
Jul 26, 2016, 5:46:15 PM7/26/16
to
I forgot to say that other VB6 ActiveX dll's register fine on that 32 bit machine, so the problem seems to be with that particular dll. Also to mention that that dll has some references to other activeX dll's and also one ActiveX exe but all those are registered fine.
RBS
unread,
Jul 27, 2016, 1:23:14 AM7/27/16
to
All solved now. There was something wrong with a dependant, non-ActiveX dll.
Depends.exe showed me the problem:
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
As often the MS error message was not very accurate or helpful.
RBS
GS
unread,
Jul 27, 2016, 2:19:12 AM7/27/16
to
ralph
unread,
Jul 27, 2016, 7:45:29 AM7/27/16
to
FYI:
That has been a common complaint against Windows since Windows 286 and
is actually based on a design-decision. (The protocol used to verify
registeration or loading are not that far apart.)
It was decided the Windows "loader" (a single process back then,
multiple colaborations on newer versions) would simply halt on any
error/warning, and report back the error it ran into during the
loading / registering processes, and not where the error occurred by
maintaining a stack of modules (steps). In the early days it was
simply because of the extra time and resources that would be involved,
with modern
O/Ss it is mostly the complication of coordination.
So whenever, you receive that error (or anything similar) - test the
module mentioned - BUT appreciate it is only the module that
initialized that particular "loading" sequence and it is likely to NOT
be the module of real interest. It's just the instigator. If it
doesn't appear to be the immediate cause always use utilities to track
the "true" culprit.
RegSvr32: Possibly a DLL module not compatible with the version of Windows - why and how to fix it?
Faced with errors related to the fact that the system has not detected a certain DLL file on the computer, many users resort to downloading said file from the Internet and then try to register it on the system using regsvr32.exe. Most of the time, they get an error, one of which is "This DLL module may not be compatible with the version of Windows running on this computer." Please check if this module is compatible with the 32-bit (x86) or 64-bit (x64) version of regsvr32.exe.”
This tutorial will talk in detail about what causes this error, what to look out for and possibly do to fix it when running regsvr32.exe commands
Table of Contents
- 1 Reasons: 64-bit (x64) and 32-bit (x86) versions of the DLLs and regsvr32.exe
- 2 How to fix the error The DLL module is not compatible with the version of Windows running on this computer
Reasons: 64-bit (x64) and 32-bit (x86) versions of the DLLs and regsvr32.exe
If you have v, Windows 10, 8.1, or Windows 7 x64, there are a few things to keep in mind when installing the DLL files:
- The DLL files with the same name can be 32-bit and 64-bit, most DLLs are supplied by the developer in two versions. But if these files are downloaded from third-party sites on the Internet, the bit rate may not be specified.
- On 64-bit systems the DLL libraries x64 are located in the C:\Windows\System32 folderand the libraries x86 (32-bit) – in the folder C:\Windows\SysWOW64although a novice user may get the opposite impression from the folder names.
- Even Windows x64 typically requires 32-bit, not 64-bit, DLLs to fix errors caused by missing DLLs. For compatibility and ease of development, some games and programs are only released in x86 versions and use the corresponding libraries even on x64 systems.
- 64-bit versions of Windows include two versions of the regsvr32.exe utility with the same file name: one 64 bit, the other 32 bit and each is used to register DLL files of the appropriate bit size.
- When regsvr32.exe is run without specifying a path, the x64 version of this tool runs by default on x64 systems.
- There are arm-64 versions of DLLs designed for devices with ARM processors. They cannot be installed on systems with regular Intel or AMD processors.
When the 32-bit (x86) version of Windows is installed on your computer, there is only one System32 folder with 32-bit DLLs and only one 32-bit version of regsvr32.exe. x64 versions of DLLs cannot be used on such Windows.
Here we have broken down all the points that will make it clearer why certain actions are taken in the next section of the error correction instruction.
How to fix the error The DLL module is not compatible with the version of Windows running on this computer
For the 32-bit version of Windows, it's simple: to fix the error, replace the DLL with its x86 version and repeat the command. If your computer is running Windows 11, 10, 8.1, or Windows 7 x64, follow these steps:
- If you have copied the DLL file to the System32 folder, then the command regsvr3.exe file.dll reported an error "The DLL module may not be compatible with the version of Windows running on this computer", this means that you tried to register a 32-bit DLL using 32-bit regsvr64. Move the DLL file to the SysWOW64 folder and then use the command with the full path:C:\Windows\SysWOW64\regsvr32.exe fail.dll
The 64-bit version of the library is required for the System32 folder.
- The reverse situation is also possible: the x64 DLL was placed in the SysWOW64 folder, and then a command with the path to regsvr32.exe was used in the same folder, resulting in the same error message. The solution is to move the x64 file to the System32 folder and use the command without specifying the full path to regsvr32.exe, and for the SysWOW64 folder use the x86 version of the file as described in step 1.
- Make sure you don't download the DLL file for ARM-64, you won't be able to use it on a normal computer or laptop in any way.
So far we have only talked about one bug, the text of which is in the title of the article. I think we've already taken care of that by now. However, it is very likely that immediately after solving this problem you will encounter another one, about which in a separate statement: The module is loaded, but the entry point DllRegisterServer is not found.