Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GDS32.DLL wants to load missing MSVCR71.DLL / MSVCP71.DLL [CORE1182] #1608

Closed
firebird-automations opened this issue Mar 27, 2007 · 9 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: ohenri (ohenri)

Votes: 1

The client API GDS32.DLL requires the DLL's MSVCR71.dll and MSVCP71.dll

It is unclear which MS Software(s) includes this library,
but it's clear that a basic running Windows 2003 (maybe in some circumstances) does not include that library.
MS Windows 2003 Server Standard Edition Verson 5.2 (Build 3790.srv03_sp2_rtm.050324-1477 SP1)

Also on a Windows NT PC (Windows NT english SP6a), the DLLs are not found.

As a result, the calling program crashes.

It's not useful to include such new libraries - often, such libraries are missed on a target PC.

There are, actually, only three solutions:

a) install a software which includes the missing libraries
b) place the missing libraries from another system into system32
c) place the missing libraries from another system into the same directory where the API is

All of them needs manual help by every single machine.

@firebird-automations
Copy link
Collaborator Author

Commented by: @reevespaul

Some comments...

- gds32.dll is deprecated. (as is NT4, for that matter. :-) Continued use of gds32 will sooner or later get Firebird users into trouble. It is, after all, an InterBase client library and you have few guarantees that the gds32 your application is loading is the firebird generated gds32.dll.

- The MS runtime libraries are shipped with the Firebird kits and can be found in the bin directory. If you must use gds32.dll you could manually copy them from there into <sys32>.

- In general the installer tries to stay away from <sys32>. <sys32> should be exclusively for O/S system files, not for application libraries. The fact that MS sometimes encourages it is not really here or there. They only examples they teach are bad examples. However, I guess it is not going to do any harm if we install the MSVC runtimes into <sys32>, whether gds32 is installed or not.

@firebird-automations
Copy link
Collaborator Author

Commented by: @reevespaul

In fact, the binary installer already copies the MSVC runtimes into <sys32>. I guess this bug report should actually be rephrased to...

'When instclient.exe generates gds32.dll and places it into the system directory it doesn't copy the dependent msvc runtime libraries.'

Fixing this would require instclient working out on the fly which are the dependant libraries. We can't just hard-code them. The dependant libraries are determined by the compiler used.

It is hard to see this as anything other than an extremely minor bug (but go on, convince me.)

In the meantime, the best work around is to use the binary installer.

@firebird-automations
Copy link
Collaborator Author

Modified by: @reevespaul

priority: Major [ 3 ] => Minor [ 4 ]

@firebird-automations
Copy link
Collaborator Author

Commented by: ohenri (ohenri)

This is not a problem of only Gds32.dll - Fbclient.dll does also require MSVCx71.dll's

And yes, the Win installer exe seems to install these dll's into the system32, but on clients these libs still are missed.

But the need of these two dlls I did'nt found in any doc but it is very important to know such dependencies.

So, this bug shall be rephrased to:
'When instclient.exe generates gds32.dll and places it into the system directory it doesn't copy the dependent msvc runtime libraries.
NOR is this requirements been documented'

And as you told above, placing of any dll's into system32 should be avoided - because it will produce problems, for example when installing and running different versions of FB parallel on the same server.... and if they are locked by another process .... and .. and ... and

So, at end, I suggest that instead of having instclient.exe which places dlls into system32, it would be better to create by installer a ".\Deploy" directory wherein all dlls are placed which are needed for any client API, gds32 or fbclient or whatelse.
and/or a Deploy-readme.

@firebird-automations
Copy link
Collaborator Author

Commented by: lacak (lacak)

Yes, when I deploy client application, I must deploy also fbclient.dll (gds32.dll if I use for example IBX in Delphi)
fbclient.dll version 1.5.x does not require MSVCx71.dlls
fbclient.dll version 2.0.x require MSVCx71.dlls

Is there no way to avoid linking fbclient.dll to MSVCx71.dll ?

@firebird-automations
Copy link
Collaborator Author

Modified by: @pcisar

Workflow: jira [ 11716 ] => Firebird [ 15528 ]

@firebird-automations
Copy link
Collaborator Author

Commented by: @dyemanov

We still depend on the MS runtime (up to v2.5) and there are no plans to change that, so this ticket gets rejected, sorry.

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

status: Open [ 1 ] => Resolved [ 5 ]

resolution: Won't Fix [ 2 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @pcisar

status: Resolved [ 5 ] => Closed [ 6 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant