|
-
Mar 5th, 2011, 11:04 PM
#1
Win 7 SP1 Breaks ADODB Binary Compatibility
It appears that the current issue of Windows 7 SP1 (which might be re-released or patched later) made some breaking changes in its ADODB typelibs.
The symptom is that a program that early binds to ADO is compiled under Win7 SP1 can only be run on Win7 SP1.
Different errors may be seen, such as "Procedure declaration does not match description of event or procedure having the same name."
The suggested workarounds include:
- Don't install (or uninstall) SP1 on Win7 dev machines.
- Try to obtain pre-Win7 SP1 ADO library and typelibs and shoehorn them into Win7 SP1 (fighting Windows File Protection).
- Rewrite everything to use late binding with ADO.
This will impact anyone using early-bound ADO objects whether in VB6, VFP, Delphi, .Net languages, or anything else.
On WikiPedia I found the statement:
Windows 7 SP1 has broken backwards compatibility of MDAC 2.8. Software compiled on Windows 7 SP1 that relies on MDAC 2.8 will not work on Windows XP (possibly not Vista either).
I don't know whether this is simply imprecise, or whether in reality it means only the Win7 SP1 typelib for ADO 2.8 compatibility is broken. In other words programs binding against e.g. the ADO 2.5 typelib might still work fine.
Breaking change in MDAC ADODB COM components in Windows 7 Service Pack 1
Note there there have been binary compatibility breaks in ADOX off and on over the different Service Pack levels of Vista and Windows 7 as well. The best fix there is probably late binding, which isn't so bad because ADOX object use tends to be more localized in typical programs.
This may be most painful to people who work on applications in a transitional state between VB and VB.net who are following the often-recommended "change things a piece at a time" approach and have hybrid applications. They may have a good working knowledge of VB.Net but much thinner VB6 and COM skills, resulting in a harder time coping with the problem.
Last edited by dilettante; Mar 5th, 2011 at 11:12 PM.
-
Mar 6th, 2011, 07:25 PM
#2
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Thanks for the information!
when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
https://get.cryptobrowser.site/30/4111672
-
Mar 7th, 2011, 06:41 AM
#3
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
The good part is compiling on Win7 RTM or Vista, XP, etc. your programs will still work on Win7 SP1 machines. You just can't work back from a Win7 SP1 compile.
-
Mar 14th, 2011, 09:38 AM
#4
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Some more on this: Changes in MDAC ADODB COM components in Windows 7 Service Pack 1.
Looks like this break will be with us from here on, so grab a Win7 RTM msado28.tlb and put it somewhere safe!
-
Jul 1st, 2011, 10:17 AM
#5
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Note that if you don't follow the chain of links you may be missing the option of installing and using the "back compat" type libraries. There is one each for i386 (x86), x64, and ia64 (Itanium, not applicable to VB6).
See the links toward the end of An ADO application does not run on down-level operating systems after you recompile it on a computer that is running Windows 7 SP 1 or Windows Server 2008 R2 SP 1 or that has KB983246 installed.
Changing to late binding is generally the most expensive option, both for making the change and for maintaining the program in the future. This should be your last resort.
-
Sep 1st, 2011, 08:00 PM
#6
Frenzied Member
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
-
Jan 21st, 2012, 01:58 PM
#7
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Well it appears that Microsoft is quietly admitting they screwed up. This is dated October 2nd, 2011 but I haven't seen it or seen anyone else mention it yet.
A better solution for the Windows 7 SP1 ADO GUID changes
Unfortunately, we drastically underestimated the number of customers who were recompiling ADO applications on Windows 7 SP1. Even worse, when I say drastically, I really mean DRASTICALLY.
It is one thing to "eat your own dog food" but they really need to quit drinking their own, er, toilet water. 
I'm concerned about the proposed solution though. The screwball Class IDs are going to be left in the ADO 6.1 typelib, which means the problem will likely surface and resurface as newbs screw up and choose that one. It is quite clear that most coders don't read docs and certainly don't keep up on Windows changes. Look how many posts we still get whining about issues that were "new" in 2006 when the Vista Dev Previews and docs came out.
Some other things related to ADO that Win7 SP1 breaks are listed there too.
Last edited by dilettante; Jan 21st, 2012 at 04:47 PM.
-
Jan 22nd, 2012, 02:37 PM
#8
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
-
Jan 22nd, 2012, 03:44 PM
#9
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Yes I had that link in post #1 above. But I'm sure it grows a bit day by day as people either stumble over this problem for the first time or feel the need to rattle the cage bars some more.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|