Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to load VB6 OCX in Windows 7 Error 372

I'm working on an application developed for Windows XP SP3, using VB6. I'm currently in the process of getting it to work on Windows 7, but am encountering a problem with one of our custom OCX files.

When attempting to load a form that contains an instance of the control contained in the problem OCX, the following error is produced:

Failed to load control 'x' from y.ocx. Your version of y.ocx may be outdated. Make sure you are using the version of the control that was provided with your application.

I've checked the version numbers and they're all correct and referencing the proper version. The OCX registers fine, and all the expected registry entries are present.

Inspection with DependencyWalker shows no missing dependencies.

The software works fine under XP, and this is (seemingly) the only issue when running on Windows 7.

Interestingly, if I run through the VB6 IDE using a VB6 group (with the offending OCX part of the group, and the application the startup project), I don't have the issue. Running the application on it's own through the IDE still presents the error.

Any ideas on what could be missing which would cause the application to throw this error?

Error occurs on both Windows 7 Professional and Home Professional, both 32 bit.

like image 349
Jack Smith Avatar asked Jan 20 '26 11:01

Jack Smith


1 Answers

This is almost certainly an interface compatibility problem. COM interfaces are versioned entirely separately from your Major/Minor/Revision numbers, which are little more than comments except as used by Installer.

Somewhere along the line you broke binary compatibility, and you are trying to deploy a library with a newer interface than your application was compiled against.

These version numbers are found in keys such as:

HKEY_CLASSES_ROOT\CLSID\{class Id GUID}\VERSION

Your program needs to have its old reference to the OCX removed, a new one set, and then it must be recompiled. This also means deleting any instances of the control and adding them back one by one.

I doubt this is a Windows 7 issue.

like image 108
Bob77 Avatar answered Jan 23 '26 21:01

Bob77



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!