The COM Course - Part 3--By Karl Moore

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

VB-World - ActiveX Development - Articles - The COM Course - Part 3 - Compatibility

Search VB-World:

All VB-WorldVB ForumsThe Web

> VBForums.com

> VBSquare.com

> VBAPI.com

Home

>

ActiveX Development >

Articles

Email this page

Printer Friendly

More From Karl

Post Feedback

Related

The COM Course - Part 3

The COM Course - Part 2

The COM Course - Part 1

ActiveX Control Tutorial - Part 5

ActiveX Control Tutorial - Part 4

Hot Picks

VB.NET Uncovered: Big Changes

VB.NET Uncovered: Working the Web

Control the Panel

Kill Context

Learn to Program with Visual Basic 6

The COM Course - Part 3

By Karl Moore

Compatibility

At the end of last week, we stumbled across a small problem. Well, rather a big problem actually.

In fact, if you've got time, it was a whopping great huge problem wearing high heels, a frilly skirt and holding a massive sign stating "I am a BIG problem!".

You see - we compiled our ActiveX DLL, then compiled a test program that used our DLL. Then we recompiled our DLL ?something you usually do after you make changes. Suddenly, our test program no longer worked. Damn.

If we had then recompiled our test program, it would've worked. But let's say your VB program, an Excel spreadsheet and one C++ accounts package all use your DLL. Do they all need to be 'recompiled' every time you make a small change to your ActiveX DLL?

The answer is, thankfully, no.

The reason we experienced problems last week was due to an issue known as compatibility. Or rather, a lack of it.

Open up your Northwind project in Visual Basic

Click 'Project', 'Northwind Properties'

Click the 'Component' tab

Take a peek at the 'Version Compatibility' frame in front of you. Here we have three options. Let's explain these now:

No Compatibility ?With every compile, your COM component gets assigned a new 'signature'. This means programs looking for older 'signatures' (the previous version of the DLL) ?simply flop

Project Compatibility ?With every compile, your COM component is assigned a new signature ?and still, any using-applications still flop. The only change here is that 'big' differences between your current project and a previous DLL project are highlighted as you compile. Ohhh, whoop-de-doo

Binary Compatibility ?When compiled, your application attempts to keep the signature of a previously compiled DLL, thus ensuring any applications using it don't magically turn into the Blue Screen of Death. However if the differences between your previously compiled DLL and your to-be-compiled DLL are too great, a new signature must be assigned

So let's test our theory:

Open last week's test application

Recompile it

Trial run your test application ?it should work

Open our ActiveX DLL project

Set the Binary Compatibility option

Recompile your DLL

Attempt to run your test application ?it should still work

Hurrah! It may sounds like complete hogwash, but when recompiling their DLLs, most developers get themselves into an awfully incompatible situation.

But hopefully you won't ?all thanks to this small aside.

Well, that's compatibility for you. About as exciting as www.PylonOfTheMonth.co.uk.

Introduction

ActiveX EXEs

In This Article

Introduction - Compatibility - ActiveX EXEs - Creating a Test ActiveX EXE - Instancing - Creating a Test Application - Distributing Components - Where to Go from Here - Conclusion -

ActiveX | Beginning | Controls | Databases | Files | Graphics | Misc | Mouse | Registry

Home | Articles | Code | Projects | Books | Reviews | Discussion Forums

Tech News | Contact Us | Site Map | Join Newsletter | Link To Us

Copyright ©1997-2001 Jelsoft Enterprises Limited. All rights reserved. Privacy Policy.

--

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航