Neste artigo veremos como compilar o driver Qt de acesso ao Firebird no Windows®.
Estou presumindo que você ira compilar o driver após a compilação da própria biblioteca Qt, e, obviamente, o Firebird deve estar instalado.
Sobre a compilação do driver Qt Firebird no Windows®, existe um bug relatado como BUG 1996.

Aqui, o endereço especifico deste bug,na pagina http://bugreports.qt.nokia.com:
http://bugreports.qt.nokia.com/browse/QTBUG-1996
Abaixo, o que diz o texto:

Description   	
The libs are called fbclient_bor.lib and fbclient_ms.lib, respectively, whereas Qt by default links against fbclient.lib.

The workaround is to call qmake like this:

qmake -o Makefile "INCLUDEPATH+=C:\pathtofirebird\include" "LIBS+=-LC:\pathtofirebird\lib -lfbclient_ms" ibase.pro


O texto mostra o procedimento para contornar o bug, na verdade muito simples, mas não consta da documentação da Qt ainda, o que pode confundir os usuários.

A documentação da Qt indica este procedimento para gerar o driver Qt Firebird no Windows®, observe que a correção do bug não consta da documentação:


How to Build the QIBASE Plugin on Windows

The following assumes InterBase or Firebird is installed in C:\interbase:

If you are using InterBase:

 cd %QTDIR%\src\plugins\sqldrivers\ibase
 qmake "INCLUDEPATH+=C:\interbase\include" ibase.pro
 nmake
If you are using Firebird, the Firebird library has to be set explicitely:

 cd %QTDIR%\src\plugins\sqldrivers\ibase
 qmake "INCLUDEPATH+=C:\interbase\include" "LIBS+=-lfbclient" ibase.pro
 nmake
If you are not using a Microsoft compiler, replace nmake with make in the line above.

Note that C:\interbase\bin must be in the PATH.


O procedimento com o Firebird é o mesmo dos outros bancos, ele deve ser instalado no diretório raiz, C:\ e não em C:\Arquivos de programas.

Edite o PATH do Windows® e insira os caminhos do Firebird.
Vá em Iniciar->Configurações->Painel de controle->Sistema->Avançado e clique em “Variáveis de ambiente”, edite a variável PATH, adicionando de preferência no inicio da variável os caminhos do MinGw, da Qt e do Firebird.
No meu caso, inclui apenas C:\Firebird\Firebird_2_1\bin no PATH, mas você pode, por via das duvidas, incluir também C:\Firebird\Firebird_2_1\lib e C:\Firebird\Firebird_2_1\include. Este é o PATH no meu computador:

C:\MinGW\bin;C:\Qt\4.5.3\bin;C:\PostgreSQL\8.4\include;C:\PostgreSQL\8.4\lib;C:\PostgreSQL\8.4\bin;C:\MySQL\bin;C:\Firebird\Firebird_2_1\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0

Lembre-se sempre de trocar os numeros de versão da Qt e do Firebird pelos numeros da versão que você esta utilizando.

O exemplo abaixo pressupões que o Firebird esteja instalado em C:\Firebird e já inclui a correção do bug relatado.
Vá para o diretorio C:\Qt\4.5.3\src\plugins\sqldrivers\ibase e digite:


qmake "INCLUDEPATH+=C:\Firebird\Firebird_2_1\include" "LIBS+=-lfbclient" "LIBS+=-L C:\Firebird\Firebird_2_1\bin" "LIBS+=-L C:\Firebird\Firebird_2_1\lib" LIBS+="-lfbclient_ms" ibase.pro

make


Se não ocorrer nenhum erro, o driver sera compilado e copiado para o diretorio C:\Qt\4.4.3\plugins\sqldrivers, seu nome é qsqlibase4.dll.

Para distribuir seu aplicativo pelas estações de uma rede intranet de maneira que eles acessem o banco de dados no servidor, neste caso o Firebird, um fator importante é a hierarquia de diretórios e a distribuição das DLL's e dos drivers de acesso a banco de dados em cada computador da rede, isto é de suma importância, pois pode trazer alguns problemas.

As DLL's dos exemplos abaixo se referem a conexão com um banco Firebird, podem ser encontradas no diretório da instalação do Firebird, na minha maquina é:

Firebird:

C:\Firebird\Firebird_2_1\bin

As DLL's da Qt:

C:\Qt\4.5.0\bin

Os drivers da Qt para acesso ao Firebird:

C:\Qt\4.5.0\plugins\sqldrivers

A hierarquia de diretórios é esta para para o aplicativo e as DLLs na estação:

seuApp
     |----->sqldrivers

Abaixo, imagem da hierarquia de diretórios, onde se vê o nome meuApp você pode nomear como quiser.(Clique na imagem para ampliar):

Hierarquia de diretórios.

Abaixo, todos os arquivos e DLLs necessários distribuidos pelos diretórios:

Hierarquia de diretórios.

Abaixo, listagem obtida a partir de um comando “DIR” do DOS dentro dos diretórios mostrando as DLL's e os drivers.


 O volume na unidade C não tem nome.
 O número de série do volume é 60DB-CB30

 Pasta de C:\cadastro_firebird

19/11/2009  10:22              .
19/11/2009  10:22              ..
17/11/2009  17:48           130.048 cadastro.exe
18/11/2009  16:44               593 config.txt
22/07/2009  17:46           450.560 FBCLIENT.dll
10/01/2009  18:32            11.362 mingwm10.dll
07/11/2009  16:17         2.737.664 QtCore4.dll
07/11/2009  16:39        11.280.384 QtGui4.dll
07/11/2009  16:40           309.248 QtSql4.dll
19/11/2009  10:21              sqldrivers
               7 arquivo(s)     14.919.859 bytes
               3 pasta(s) 16.215.343.104 bytes disponíveis
 O volume na unidade C não tem nome.
 O número de série do volume é 60DB-CB30

 Pasta de C:\cadastro_firebird\sqldrivers

19/11/2009  10:21              .
19/11/2009  10:21              ..
14/11/2009  11:03           134.656 qsqlibase4.dll
               1 arquivo(s)        134.656 bytes
               2 pasta(s) 16.215.343.104 bytes disponíveis



Depois disso instale o Firebird-Client nas estações, use o mesmo instalador do Firebird Server, selecione a opção "Instalação miníma do Cliente - sem servidor, sem ferramentas".
Isto é necessário para que sejam instaladas algumas DLLs necessárias.

Abaixo, instalador do Firebird com a opção "Instalação miníma do Cliente - sem servidor, sem ferramentas" selecionada.(Clique na imagem para ampliar):

Firebird client.

O Firebird, ao contrario do PostgreSql e do MySql já vem configurado para permitir acesso remoto, basta dar permissão ao usuário que você ira utilizar para acessar o banco.

Seguem alguns links sobre configuração do Firebird em rede, inclusive sobre segurança no Firebird, nele devemos nos preocupar em talvez bloquear o acesso remoto, já que ele por padrão é instalado com esse acesso liberado.

Instalando Firebird em rede no Windows®: http://www.comunidade-firebird.org/cflp/downloads/CFLP_O027.PDF

Protegendo seu Servidor Firebird: http://www.comunidade-firebird.org/cflp/downloads/CFLP_T016.PDF

Segurança em Aplicações com o Firebird: http://www.comunidade-firebird.org/cflp/downloads/CFLP_O025.PDF


Se ocorrer algum problema de conexão,relativo a libs ou DLLs não encontradas pelo seu aplicativo na estação, por exemplo, o aplicativo pode não conseguir carregar o driver, qsqlibase4, devido a algum problema na FBCLIENT.dll, que é a principal, o "client" do Firebird, você pode usar um excelente software chamado Dependency Walker , que analisa as dependências entre as DLLs e mostra uma possível dependência quebrada, DLLs faltando ou DLLs incompatíveis.

Você pode baixá-lo diretamente do site dele, depois crie uma pasta no diretório raiz e descompacte o arquivo nesta pasta, ele não cria atalho no desktop nem entrada no menu iniciar, basta rodar o Dependency Walker direto da pasta onde ele esta,vá ao menu File->Open e escolha uma DLL ou executável, é só isso, ele ira abrir e analisar, conforme a imagem abaixo..

Abaixo, o Dependency Walker analisando a qsqlibase4 e suas dependências.(Clique na imagem para ampliar):

Dependency Walker.

Pagina Inicial



Comentários:


Nenum comentário

Deixe seu comentário:


 *

 *



 *
  Campos marcados com * são obrigatórios.