Subject RE: [firebird-support] Unable to load 64bit fbclient.dll
Author Mark Rotteveel
On Thu, 13 Mar 2014 20:58:41 +0000, "Leyne, Sean"
<Sean@...> wrote:
>> Apologies if this is a double post.  My first time using Yahoo's
>> Firebird support
>> group.
>>
>> Platform: Windows 2008 Server R2
>>
>> I have Firebird 64 bit installed from the file:
>>
>> Firebird-2.5.2.26540_0_x64.exe
>>
>> The config is  "Super Classic".
>>
>> I examine fb_inet_server.exe in Windows Task Manager and see no "*32"
>> beside the "Image Name" so I know it is running as a 64 bit process.
>>
>> I have made a Delphi XE3 .exe that connects to Firebird.  I examine the
>> Delphi
>> .exe in Task Manager, and again, see no *32 beside it, so I know it is
>> running
>> as a 64 bit process.

Unless your windows is 32 bit, then processes don't have that marker.

>> When I try to connect to FB using the 854KB 64b fbclient at:
>>
>> C:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll
>>
>> I get the error message "unable to load..."
>>
>> But when I load the 540KB 32bit fbclient.dll at
>>
>> C:\Program Files\Firebird\Firebird_2_5\WOW64\fbclient.dll
>>
>> it loads normally.
>>
>> What am I missing here that is preventing the 64b fbclient.dll from
>> loading?
>
> Actually, the WOW64 folder contains the x64 binaries (not the 32 bit)

No it doesn't. The WoW64 folder contains the 32 bit DLLs, just like the
%WINDIR%\SysWoW64 does. \bin contains the 64 bit one.

Proof using the dumpbin utility from Visual Studio (with /headers):

For \bin\fbclient.dll:

Dump of file C:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll

PE signature found

File Type: DLL

FILE HEADER VALUES
8664 machine (x64)
....

For \WoW64\fbclient.dll:

Dump of file C:\Program Files\Firebird\Firebird_2_5\WOW64\fbclient.dll

PE signature found

File Type: DLL

FILE HEADER VALUES
14C machine (x86)


> The folder should really be renamed "x64"

No it shouldn't it is named correctly for what it contains. Microsoft
however should never have done what they did with putting the 64 bit files
in System32 and the 64 bit in SysWoW64.

> There is a open tracker case to have the "bitness" of the binaries added
> as a string to the Windows file information, to allow user/developers to
> confirm whether they are looking at 32 or 64 bit files/binaries.

More likely the OP is using a 64 bit IDE to compile and run a 32 bit
Delphi application. Or Delphi uses a 64 bit wrapper for what is actually a
32 bit application.

Mark