Board index » delphi » IBX Dependancy on gds32.dll

IBX Dependancy on gds32.dll

Hi,

I have a non-database app that shares some classes with an IBX app,
therefore there are some IBX units in the uses clause, but no IBX code
is ever 'touched'.

If I install this app on a machine without gds32.dll I get access
violations on startup, but with gds32.dll it all runs perfectly.

Could this be a problem with IBX or with my code?

Currently I am including the IB client install in my installation, but
it is a bit of an overkill.

And yes, before any points it out, I should redesign my classes <g>

J

 

Re:IBX Dependancy on gds32.dll


I believe that as soon as one IBX component gets created, it will use
gds32.dll ... but, I'm not completely sure on that...

--
Martijn Tonies
Upscene Productions

InterBase Workbench - The Developer Tool for InterBase
http://www.interbaseworkbench.com

"Experience is what you get when you didn't get what you wanted"

"J Hall" <j...@hall.com> schreef in bericht
news:MPG.16b89280c6aba2899899de@newsgroups.borland.com...

Quote
> Hi,

> I have a non-database app that shares some classes with an IBX app,
> therefore there are some IBX units in the uses clause, but no IBX code
> is ever 'touched'.

> If I install this app on a machine without gds32.dll I get access
> violations on startup, but with gds32.dll it all runs perfectly.

> Could this be a problem with IBX or with my code?

> Currently I am including the IB client install in my installation, but
> it is a bit of an overkill.

> And yes, before any points it out, I should redesign my classes <g>

> J

Re:IBX Dependancy on gds32.dll


In article <MPG.16b89280c6aba289989...@newsgroups.borland.com>,
j...@hall.com says...

Quote

> Could this be a problem with IBX or with my code?

        IBX loads gds32.dll with a method called CheckIBLoaded in
IBIntf.pas.  Check "Use Debug DCUs" in Project->Options->Compiler.  Then
do a Build on your project.  Put a breakpoint on this method and run.  
When it trips, look at the Call Stack.

        HTH,

        -Craig

--
 Craig Stuntz (TeamB) Vertex Systems Corp. Columbus, OH
     Delphi/InterBase WebLog: http://delphi.weblogs.com
     InterBase PLANalyzer (Free IB optimization tool):
          http://delphi.weblogs.com/IBPLANalyzer

Re:IBX Dependancy on gds32.dll


In article <MPG.16b8974534788460989...@newsgroups.borland.com>,

Quote
cstuntz@no_spam.vertexsoftware.com wrote...

Hi,

Quote
> > Could this be a problem with IBX or with my code?

>    IBX loads gds32.dll with a method called CheckIBLoaded in
> IBIntf.pas.  Check "Use Debug DCUs" in Project->Options->Compiler.  Then
> do a Build on your project.  Put a breakpoint on this method and run.  
> When it trips, look at the Call Stack.

OK, thanks I will have a detailed look.  I can add that this happens
when using the IBX runtime package and not when 'compiled in'.

We deploy with packages (so I could not fix the IBX source if that was
the problem), and I needed to get this deployed today, I had to do a
mass refactoring (ModelMaker saved my life!), to get the IBX out of the
uses clauses, but I kept a snapshot of the source to play with.

Cheers

j

Re:IBX Dependancy on gds32.dll


The only things that get the gds32.dll loaded are instantiating TIBDatabase,
TIBCustomDataSet, TIBDatabaseInfo, TIBEvents, an IBService, IBSQL or
TIBTransaction.  Basically the components that make up IBX.  No where other than
in constructors of the objects does IBX call CheckIBLoaded, TryIBLoad or
GetIBClientVersion (the three ways that gds32.dll will get loaded by IBX).
Somewhere you must be instantiating an object somewhere you don't know about
because just having the IBX units in the uses clause is not enough to force a
gds32.dll load.

Quote
J Hall wrote:

> In article <MPG.16b8974534788460989...@newsgroups.borland.com>,
> cstuntz@no_spam.vertexsoftware.com wrote...

> Hi,

> > > Could this be a problem with IBX or with my code?

> >       IBX loads gds32.dll with a method called CheckIBLoaded in
> > IBIntf.pas.  Check "Use Debug DCUs" in Project->Options->Compiler.  Then
> > do a Build on your project.  Put a breakpoint on this method and run.
> > When it trips, look at the Call Stack.

> OK, thanks I will have a detailed look.  I can add that this happens
> when using the IBX runtime package and not when 'compiled in'.

> We deploy with packages (so I could not fix the IBX source if that was
> the problem), and I needed to get this deployed today, I had to do a
> mass refactoring (ModelMaker saved my life!), to get the IBX out of the
> uses clauses, but I kept a snapshot of the source to play with.

> Cheers

> j

--
Jeff Overcash (TeamB)
      (Please do not email me directly unless  asked. Thank You)
A human being should be able to change a diaper, plan an invasion, butcher
a hog, conn a ship, design a building, write a sonnet, balance accounts, build
a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act
alone, solve equations, analyze a new problem, pitch manure, program a computer,
cook a tasty meal, fight efficiently, die gallantly.  Specialization is for
insects.   (RAH)

Re:IBX Dependancy on gds32.dll


In article <3C4F7E82.E9560...@mindspring.com>,

Quote
jeffoverc...@mindspring.com wrote...

Hi,

Quote
> The only things that get the gds32.dll loaded are instantiating TIBDatabase,
> TIBCustomDataSet, TIBDatabaseInfo, TIBEvents, an IBService, IBSQL or
> TIBTransaction.  

> Somewhere you must be instantiating an object somewhere you don't know about

I don't think so, and the MAP file and the Visual Studio Dependancy
viewer, only show that the initialization/finalization sections are
being called, nothing else.

Quote
> because just having the IBX units in the uses clause is not enough to force a
> gds32.dll load.

It seams a bit more complicated than that.  When the project is built
without runtime packages there is no problem, with or without gds32.dll,
but when built with runtime packages I get the AV almost immediately.  I
have put breakpoints on all the method in IBX that actually loads
gds32.dll, and breakpoints on all the initialization/finalization
sections, but the AV happens before any of those is reached.  What I am
going to do now I have 'fixed' my app by re-writing it, is rip as much
out of the old version to have a small test case.

j

Other Threads