Thread: newer (11+) psqlODBC install on old system

newer (11+) psqlODBC install on old system

From
Joe Gilmour
Date:
Hi all,

I have about  10 very old Windows XP installations using a legacy 
application. Everything was working fine until I upgraded Postgresql 
server to 12 from 11. This seemed to break the connection on the older 
pgsqlODBC 9 drivers that were installed. I can install and connect with 
up to pgsqlODBC 10. Later versions (11 or 12) on XP install OK but 
cannot connect, giving the error:

The specified driver cannot be loaded because of a system error 126

I would be happy using older pgsqlODBC versions but I need 12 to be more 
compatible because I'm getting "c.relhasoids does not exist" errors in 
the logs and am getting connection problems with earlier versions.

I've tried installing the Visual C++ runtimes from different versions 
but that doesn't seem to help.

Any suggestions? Seems like a missing dll.

Thanks,

Joe




Re: newer (11+) psqlODBC install on old system

From
Clemens Ladisch
Date:
Joe Gilmour wrote:
> The specified driver cannot be loaded because of a system error 126

This error code means that some DLL is missing.

Did you install the driver using the full .exe installer, which should include the VC++ redistributables?


Regards,
Clemens



Re: newer (11+) psqlODBC install on old system

From
Clemens Ladisch
Date:
Joe Gilmour wrote:
> I wonder if it there is another DLL that it depends on that isn't in the distributed installer?

Good question.  Please try a dependency walker (e.g. https://github.com/lucasg/Dependencies, or
the old https://www.dependencywalker.com/) on the driver (psqlodbc*.dll).


Regards,
Clemens



Re: newer (11+) psqlODBC install on old system

From
Clemens Ladisch
Date:
Joe Gilmour wrote:
> GetProcAddress(0x77BD0000 [MIDIMAP.DLL], "midMessage") called from "WINMM.DLL" at address 0x76B43AFA and returned
NULL.Error: The specified procedure could not be found (127).
 

This is strange, because both DLLs should be part of the OS.
Do these DLLs come from the system directory, or did you pick up a rogue DLL from somewhere else?


Regards,
Clemens



Re: newer (11+) psqlODBC install on old system

From
Joe Gilmour
Date:
On 12/5/20 6:06 pm, Clemens Ladisch wrote:
> Joe Gilmour wrote:
>> GetProcAddress(0x77BD0000 [MIDIMAP.DLL], "midMessage") called from "WINMM.DLL" at address 0x76B43AFA and returned
NULL.Error: The specified procedure could not be found (127).
 
> This is strange, because both DLLs should be part of the OS.
> Do these DLLs come from the system directory, or did you pick up a rogue DLL from somewhere else?
>
>
> Regards,
> Clemens
>
>
I've had another go with Depends

When I profile odbcad32.exe under libssl-1_1.dll it says 
vcruntime140.dll is missing as are some dll files starting with 
API-MS-WIN-CRT.

Under libcrypto-1_1.dll it says the same but also missing bcrypt.dll

Seems almost like a path issue but I really don't know.

Thanks again.

Joe






RE: newer (11+) psqlODBC install on old system

From
Danny Severns
Date:
This is probably of not related, but just in case, I am using Win10, but I do not have WINMM.DLL anywhere on my system.
I use MinGW for Windows development which contains libwinmm.a in the MinGW\lib folder.  It is also included in two
thirdparty apps I use that are compiled using gcc & MinGW.  If you think this is relative to your problem, I can see
whatprocedures are included in this archive.
 
HTH
Danny

-----Original Message-----
From: Joe Gilmour <joe@gilmours.com.au> 
Sent: Wednesday, May 13, 2020 8:22 AM
To: pgsql-odbc@lists.postgresql.org
Subject: Re: newer (11+) psqlODBC install on old system

On 12/5/20 6:06 pm, Clemens Ladisch wrote:
> Joe Gilmour wrote:
>> GetProcAddress(0x77BD0000 [MIDIMAP.DLL], "midMessage") called from "WINMM.DLL" at address 0x76B43AFA and returned
NULL.Error: The specified procedure could not be found (127).
 
> This is strange, because both DLLs should be part of the OS.
> Do these DLLs come from the system directory, or did you pick up a rogue DLL from somewhere else?
>
>
> Regards,
> Clemens
>
>
I've had another go with Depends

When I profile odbcad32.exe under libssl-1_1.dll it says vcruntime140.dll is missing as are some dll files starting
withAPI-MS-WIN-CRT.
 

Under libcrypto-1_1.dll it says the same but also missing bcrypt.dll

Seems almost like a path issue but I really don't know.

Thanks again.

Joe






Re: newer (11+) psqlODBC install on old system

From
Clemens Ladisch
Date:
Joe Gilmour wrote:
> On 12/5/20 6:06 pm, Clemens Ladisch wrote:
>> Joe Gilmour wrote:
>>> GetProcAddress(0x77BD0000 [MIDIMAP.DLL], "midMessage") called from "WINMM.DLL" at address 0x76B43AFA and returned
NULL.Error: The specified procedure could not be found (127).
 
>>
>> This is strange, because both DLLs should be part of the OS.
>> Do these DLLs come from the system directory, or did you pick up a rogue DLL from somewhere else?
>
> I've had another go with Depends
>
> When I profile odbcad32.exe under libssl-1_1.dll it says vcruntime140.dll is missing

As far as I know, libssl does not come with Windows itself.
Are you using an Intel graphics driver? Or which DLL depends on this?

Is this the 32- or 64-bit version?  Which VC runtime did you try to install?

> as are some dll files starting with API-MS-WIN-CRT.

These virtual DLLs do not actually exist.
That old depends tool does not know about them; try the latest release of the other one.


Regards,
Clemens