Compilar el driver OCI de Oracle para Qt5 en windows

1. Introducción

Tengo la necesidad de probar Oracle, así que decidí compilar el driver QOCI para Qt5. En este pequeño tutorial verémos como compilar el driver QOCI para poder conectarnos al gestor de base de datos Oracle desde nuestras aplicaciones Qt5. La compilazión se realizará para la versión distribuida de Qt para Visual Studio 2010.

1.1. Contenido

  1. Desacarga de herramientas escenciales.
  2. Estableciendo las variables de entorno para la compilación.
  3. Instalación del driver QOCI

2. Requerimientos

  1. Qt 5.1.0 o mayor para VS 2010, lo puedes descargar desde aquí.
  2. Microsoft Visual Studio 2010, puedes utilizar la versión de pago, la Express o la que viene en el Windows SDK 7.
  3. Oracle 12g o mayor(no lo he provado con versiones anteriores). Para esto necesitamos el INstant Client SDK, lo podemos descargar desde aquí. Para este tutorial se usó instantclient-basic-nt-12.1.0.1.0.zip(Bibliotecas para tiempo de ejecución) además del  instantclient-sdk-nt-12.1.0.1.0.zip.(SDK, include files y ejemplos).
Es muy problable que ya tengas instalado alguna version de Qt para windows en tu computadora. Para este tutorial es necesario que tengas instalado la versión para Visual Studio, aunque no recomiendo el uso de la versión de Qt para MINGW, los pasos a seguir serían casi similares.

3. Instalando cabeceras de desarrollo OCI (Oracle Call Interfaz)

Primero, por cuestiones de orden, crearemos una carpeta llamada oracle en el disco c:\, finalmente debemos descomrimir el archivo instantclient-sdk-nt-12.1.0.1.0.zip en la carpeta oracle antes creada. Esto creará la carpeta instantclient_12_1 dentro de la carpeta oracle, teniendo las siguientes carpetas(rutas completas):

C:\oracle\instantclient_12_1\help
C:\oracle\instantclient_12_1\sdk
C:\oracle\instantclient_12_1\sdk\lib
C:\oracle\instantclient_12_1\sdk\include

4. Preparando el entorno

Abrimos una consola Qt, para esto nos dirigimos a Inicio->Qt5.1.0->5.1.0->MSVC 2010->Qt 5.0.2 for Desktop(MSVC 210), se nos abrirá una consola, en la misma consola nos indicará :

Remenber to call vcvarsall.bat to complete environment setup!

Ahora debemos de llamar al entorno de compilación de Visual Studio 2010, y esto depende el tipo de instalación que hayas realizado. En caso de haber usado el Windows SDK 7 deberás ejecutar la siguiente línea:

call "C:\Archivos de programa\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd"

En caso de haber utilizado la instalación por el mismo instalador de Visual Studio 2010 (Versión Express o de pago) deberás ejecutar la siguiente línea:

call "C:\Archivos de programa\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"

Para probar que las variables se han establecido correctamente ejecutamos el comando nmake:

nmake

Nos dará la siguiente salida:

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1064: MAKEFILE not found and no target specified
Stop.

En caso de que salga "nmake" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable. nos indica que no está establecido todabia el entorno, debemos ejecutar los espacios anteriores correctamente.

Ahora nos dirigmos a la carpeta del driver oci.pro, para esto debemos ejecutar el siguiente comando:

cd C:\Qt\Qt5.1.0\5.1.0\Src\qtbase\src\plugins\sqldrivers\oci

En mi caso la versión de Qt5 que estoy utilizando es la 5.1.0, deberás cambiar la ruta según la versión de Qt5 que tengas. Ahora ejecutaremos el comando qmake:

qmake "INCLUDEPATH+=C:\oracle\instantclient_12_1\sdk\include" "LIBS+=-LC:\oracle\instantclient_12_1\lib\msvc\ " oci.pro

Ahora compilamos:

nmake

Ahora instalamos:

nmake install

Esto creará los archivos qsqloci.dll, qsqlocid.dll y qsqlocid.pdb en C:\Qt\Qt5.1.0\5.1.0\msvc2010_opengl\plugins\sqldrivers. La carpeta dependerá de la versión de Qt que estes usando.

4.1. Reditribución

Para que nuestro driver funcione necesitamos la BIblioteca de Enlace DInámico(.dll) OCI.dll, para esto debemos descomprimir instantclient-basic-nt-12.1.0.1.0.zip(extraer aquí), esto creará una carpeta  instantclient_12_1, el archivo oci.dll está en la raiz de la carpeta desomprimida.

Sistemas Operativos: