だから、これはそれを行う方法です:
予備メモ:
QtSDK/QtCreator/Qt 4.8.1 32 lib がインストールされていたので、ディレクトリ システムに QtSources フォルダーと「Qt 4.8.1 for Desktop (MinGW)」(Qt で使用するために準備されたコマンド プロンプト) の両方がありました。また、A には Oracle データベース 32 がインストールされており、その中に「include」および「lib」フォルダーがあるフォルダー C:\Oracle\ がありました。「include」には oci.h などの .h があり、「lib」には oci.dll などの .dll と .lib があり、これらはすべてコンパイルに必要です。Qt プロジェクトのドキュメントに従って、"c:\oracle\bin" を PATH 環境変数に追加します (コンピューターのプロパティ -> 詳細システム設定 -> [詳細] タブ -> 環境変数 -> システム変数セクション)。
初挑戦:
MinGW 用に調整された、Qt プロジェクトの Web サイトに示されているコンパイルのデフォルト コード (実際にはデバッグ ライブラリ用のコード) は次のとおりです。
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
%QTDIR% とは、Qt ソース コードが配置されているフォルダーを意味します。私の場合、これは「C:\QtSDK\QtSources\4.8.1\」です。ヒント: このコードをバッチ ファイル (name.bat) に入れます。
最初に発生した問題は、oci.h および qsqlcachedresult_p.h という一部のファイルが欠落していると報告されたことです。1 つ目は、mingw が上記のインクルード フォルダーに遭遇しようとしたときに何らかの問題が発生した結果です。
2 番目の問題は、ファイルを実際の場所から必要な欠落したパスにコピー アンド ペーストすることで解決されました。「C:\QtSDK\QtSources\4.8.1\src\sql\kernel」にあり、「C:\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtSql\private」にコピーする必要があります ( 「プライベート」フォルダを作成する必要があります)。
同じ情報源によると、最初の問題は、%QTDIR%\src\plugins\sqldrivers\oci の makefile.release および makefile.debug ファイルの両方の INCPATH 変数に Oracle インクルード パスを配置することによって修正する必要があります。
デバッグ中:
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 パスも記載しています)。
これら 2 つのファイルを手動で調整する際の問題は、次回「qmake oci.pro」と入力したときに、両方が再作成され、調整が失われることです。そのため、Qt Project のコードをもう一度入力する必要がありますが、「qmake oci.pro」行は省略します。
2 回目の試行:
これを実行すると、最初の 2 つの問題は解決されましたが、ld.exe から -loci (oci.dll ファイル) が見つからないことが報告されました。これを修正するために、oci lib パスを LIBS 変数に入れました。
デバッグ中:
LIBS = -L"c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib" debug\qsqlocid_resource_res.o -loci -lQtSqld4 -lQtCored4 -L"c:\Oracle\lib\msvc"
リリースも同様。
3 回目の試行:
これが完了したら、Qt Project のコード (「qmake oci.pro」なし) を入力すると正常に実行されます。唯一の問題は、デバッグ ライブラリしか作成されていないことです。したがって、これを修正するには、次の式で上記の手順のいくつかを繰り返す必要がありました。
- qmake 行を " qmake oci.pro "CONFIG+=release" " に変更して、元の Qt プロジェクト コードを入力します。
- %QTDIR%\src\plugins\sqldrivers\oci の makefile.release ファイルを前と同じように編集します。
- Qt プロジェクトのコードをもう一度入力します。qmake の行は省略します。
また、リリース モードの dll ファイルと .a ファイルも、%QTDIR%\src\plugins\sqldrivers\oci 内のそれぞれのフォルダーで検出されます。
仕上げ:
最後に、ファイル libqsqloci4.a、qsqloci4.dll (リリース)、libqsqlocid4.a、qsqlocid4.dll (デバッグ) を C:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers 、sql dll が格納されているフォルダーにコピーします。 MinGWがそれらと連携するために配置されており、QtでOCIドライバーを問題なく使用できるはずです。テストするには、Qt Creator に移動し、次のコードまたは類似のコードを入力します。
if (!QSqlDatabase::isDriverAvailable("QOCI"))
cout << "FAILURE: No Oracle Database driver available." << endl;
else
cout << "SUCCESS: Oracle Database driver found." << endl;
チュートリアル終了。
得られた結論: 行
set INCLUDE=%INCLUDE%;c:\oracle\oci\include
set LIB=%LIB%;c:\oracle\oci\lib\msvc
元の Qt Project コードでは、おそらく何の役にも立たないでしょう。また、元のコードを入力すると、デバッグ OCI ライブラリのみがコンパイルされます。
それが役立つことを願っています!
モメルギル