ETC2017. 6. 20. 11:30

QT를 이용하여 오라클 데이터베이스에 접속하는 프로그램을 만들고자 할 경우 QOCI, QODBC 등의 방법으로 접속을 할수 있습니다.

저의 테스트 환경인 QT 5.9 버전에서는 QOCI에 대한 SQL Database Drivers는 제공되지 않기 때문에 직접 생성하여 사용해야합니다.



1. 환경 변수 설정

QTDIR=C:\Qt\Qt5.9.0\5.9\mingw53_32\bin


#### mingw32-make.exe를 사용하기 위한 환경변수의 PATH에 추가

C:\Qt\Qt5.9.0\Tools\mingw530_32\bin



#### 적용 예 : PATH=%PATH%;%QTDIR%\bin;C:\Qt\Qt5.9.0\Tools\mingw530_32\bin



2. cmd.exe를 실행하여 아래와 같이 컴파일 진행

set INCLUDE=%INCLUDE%;N:\app\product\11.2.0\client_1\oci\include

set LIB=%LIB%;N:\app\product\11.2.0\client_1\oci\lib\msvc

set QMAKE_DEFAULT_INCDIRS=N:\app\product\11.2.0\client_1\oci\include

qmake oci.pro

mingw32-make


정상적으로 빌드가 될 경우

C:\Qt\Qt5.9.0\5.9\Src\qtbase\plugins\sqldrivers 경로에 qsqloci.dll, qsqlocid.dll 파일이 생성됨.



3. qmake로 컴파일 진행 중 아래 에러가 발생할 경우

- ERROR : Project ERROR: Library 'oci' is not defined.


#### oci.pro 파일의 원본을 열어서 수정 해야함.

------------------------------------------------------------

TARGET = qsqloci


HEADERS += $$PWD/qsql_oci_p.h

SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp


# QMAKE_USE += oci  >> 오라클 클라이언트에서 제공하는 oci.lib를 이용하여 컴파일을 하였더니 OCI 함수를 못찾는 경우가 발생하여 instant-client의 oci.dll 파일로 대체하여 컴파일 하였음.

QMAKE_LFLAGS += oci.dll


darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ


OTHER_FILES += oci.json


PLUGIN_CLASS_NAME = QOCIDriverPlugin

include(../qsqldriverbase.pri)


------------------------------------------------------------

#### 다시 컴파일 진행 : qmake "LIBS+=-loci" oci.pro



4. mingw32-make로 컴파일 진행 중 아래 에러가 발생할 경우

- ERROR : qsql_oci.cpp:65:17: fatal error: oci.h: No such file or directory

Makefile.Debug / Makefile.Release을 열어서 INCPATH와 LIBS 변수에 오라클의 $ORACLE_HOME/oci/include와 $ORACLE_HOME/oci/msvc 경로를 각각 설정하고 다시 mingw32-make 를 실행함.



5. qsqloci.dll을 생성하기 위한 참조 경로


# oci.pro path

C:\Qt\Qt5.9.0\5.9\Src\qtbase\src\plugins\sqldrivers\oci


# plugin path

C:\Qt\Qt5.9.0\5.9\mingw53_32\plugins\sqldrivers


# OCI HOME

N:\app\product\11.2.0\client_1\oci


# OCI INCLUDE

N:\app\product\11.2.0\client_1\oci\include


# OCI MSVC

N:\app\product\11.2.0\client_1\oci\lib\msvc


# release path

C:\Qt\Qt5.9.0\5.9\Src\qtbase\plugins\sqldrivers


# 참조 페이지 

http://doc.qt.io/qt-5/sql-driver.html#qodbc

https://stackoverflow.com/questions/17601662/how-to-build-qt-qoci-oracle-database-driver-on-windows-with-mingw

http://www.oracle.com/technetwork/topics/winsoft-085727.html

'ETC' 카테고리의 다른 글

CodeBlocks에서 헤더파일과 라이브러리 추가  (0) 2017.06.20
Posted by Tiwaz