그래서이 방법으로 할 수 있습니다
내가했다 QtSDK/QtCreator/Qt는 4.8.1 설치, 그래서 내 디렉토리 시스템에서 모두 QtSources 폴더를 가지고뿐만 아니라 32 LIB "데스크탑 용 Qt 4.8.1 (MinGW)"- Qt 사용을 위해 준비된 명령 프롬프트. A는 Oracle 데이터베이스 32에도 "include"및 "lib"폴더가있는 C : \ Oracle \ 폴더가 설치되어 있습니다. "include"에는 oci.h와 같은 .h가 있고 "lib"에는 oci.dll과 같은 .dll과 .lib가 있습니다. 모두 컴파일에 필요합니다. Qt 프로젝트 설명서에 따라 PATH 환경 변수 (컴퓨터 속성 -> 고급 시스템 설정 -> 탭 "고급"-> 환경 변수 -> 시스템 변수 섹션)에 "c : \ oracle \ bin"을 추가합니다.
첫 번째 시도 : % QTDIR %으로
set INCLUDE=%INCLUDE%;c:\oracle\oci\include
set LIB=%LIB%;c:\oracle\oci\lib\msvc
cd %QTDIR%\src\plugins\sqldrivers\oci
qmake oci.pro
mingw32-make
: (디버그 lib 디렉토리에 실제로 일)
기본 코드 컴파일는 MinGW 조정 Qt는 프로젝트 웹 사이트, 같이는 다음과 같습니다 하나는 Qt 소스 코드가 위치한 폴더를 의미합니다. 제 경우에는 "C : \ QtSDK \ QtSources \ 4.8.1 \"입니다. 팁 :이 코드를 배치 파일 (name.bat)에 넣으십시오.
첫 번째 문제는 oci.h 및 qsqlcachedresult_p.h 파일이 누락 된 것으로보고되었습니다. 첫 번째는 mingw가 위의 include 폴더를 발견하려고 시도하는 동안 어떤 종류의 문제의 결과이며, 두 번째는 Qt 실수 일 것입니다. qsqlcachedresult_p.h는 실제로 폴더가 누락되어 있습니다.
두 번째 문제는 파일을 복사하여 실제 장소에서 필요한 누락 된 경로에 붙여 넣음으로써 해결되었습니다. "C : \ QtSDK \ QtSources \ 4.8.1 \ src \ sql \ kernel"에 있으며 "C : \ QtSDK \ Desktop \ Qt \ 4.8.1 \ mingw \ include \ QtSql \ private"에 복사해야합니다 ("개인"폴더를 생성해야합니다).
같은 소스에 따르면 첫 번째 문제는 makefile.release 및 makefile의 INCPATH 변수에 Oracle 포함 경로를 배치하여 수정해야합니다.디버그 파일 % QTDIR % \ SRC \ 플러그인 \ sqldrivers \ OCI :
디버그에서
:
INCPATH = -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtCore" (...) -I"c:\Oracle\include" -I"c:\Oracle\lib\msvc"
릴리스
에서
INCPATH = -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtCore" (...) -I"c:\Oracle\include" -I"c:\Oracle\lib\msvc"
(나는 또한 단지 보증의 lib 디렉토리 경로를 넣어).
두 파일을 수동으로 조정할 때의 문제는 다음 번에 "qmake oci.pro"를 입력하면 두 파일이 다시 만들어지고 조정 내용이 손실됩니다. 이제는 Qt Project의 코드를 다시 입력해야하지만 "qmake oci.pro"줄은 입력하지 않아야합니다.
두 번째 시도는 :
이 이루어졌다
, 처음 두 문제를 해결하지만, ld.exe보다 그 -loci합니다 (OCI.DLL 파일) 찾을 수 없습니다보고되었다. 디버그에서
: 릴리스에 대한
LIBS = -L"c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib" debug\qsqlocid_resource_res.o -loci -lQtSqld4 -lQtCored4 -L"c:\Oracle\lib\msvc"
같은이 문제를 해결하기 위해, 나는 LIBS 변수의 OCI lib 디렉토리 경로를 넣어.
세 번째 시도 : 수행이와
("qmake를 oci.pro"없이) Qt는 프로젝트의 코드를 입력 잘 실행됩니다. 유일한 문제는 디버그 라이브러리 만 생성된다는 것입니다. 그래서이 문제를 해결하기 위해, 나는 다음과 같은 수식 위의 단계의 일부를 반복했다 :
- 유형은 qmake를 선 원래 Qt는 프로젝트의 코드가 "qmake를 oci.pro"CONFIG + = 릴리스를 ""로 변경.
- 전에 완료 한대로 % QTDIR % \ src \ plugins \ sqldrivers \ oci의 makefile.release 파일을 편집하십시오.
- Qmake 라인을 사용하지 않고 Qt Project 코드를 다시 입력하십시오.
이제 릴리스 모드 용 dll 및 .a 파일도 % QTDIR % \ src \ plugins \ sqldrivers \ oci의 해당 폴더에서 발견되어야합니다.
마감 :
마지막으로, C로 파일 libqsqloci4.a, qsqloci4.dll (릴리스), libqsqlocid4.a, qsqlocid4.dll (디버그)을 복사 : \ QtSDK \ 바탕 화면 \ Qt를 \ 4.8.1 \와 Mingw \ plugins \ sqldrivers, MinGW가 SQL dll과 함께 작동하도록 폴더가있는 폴더이며 Qt에서 OCI 드라이버를 사용할 수 있어야합니다. 테스트하려면 Qt Creator로 이동하여 다음 또는 이와 유사한 코드를 입력하십시오 :
if (!QSqlDatabase::isDriverAvailable("QOCI"))
cout << "FAILURE: No Oracle Database driver available." << endl;
else
cout << "SUCCESS: Oracle Database driver found." << endl;
튜토리얼 끝. 촬영
결론 : 원래 Qt는 프로젝트 코드의 라인
set INCLUDE=%INCLUDE%;c:\oracle\oci\include
set LIB=%LIB%;c:\oracle\oci\lib\msvc
아마 아무것도 도움이되지 않습니다. 또한 원래 코드를 입력하면 디버그 OCI 라이브러리 만 컴파일됩니다.
도움이되기를 바랍니다.
momergil