Qt5.12 Oracleデータベースをコンパイルしてデータベースを駆動および接続するには

2231 ワード

最近、プロジェクトはOracleに接続するデスクトッププログラムを作る必要があります.Qtでやりたいと思っています.結果、環境構成は2日間行われました.記録してください.
                                                         
Qtバージョン:Qt 5.12.2
Oracleバージョン:11.2.0
OS:window 10
                                                         
Qtはインストール時に複数のコンパイラキットを選択でき、私はmingw 73を選択しました.32、mingw73_64、msvc2015_64、msvc2017_64の4種類、さらにSource(ソースコード)を選択する必要があります.
そしてQtCreatorを開き、D:Qt5.12.2Srcqtbasesrcpluginssqldriversociプロジェクト(Dディスクに装着)を開き、ociを修正します.Proファイル:
とりあえずmsvc 2015を試してみました64ファイルのコンパイル、変更:
QMAKE_USE += oci    QMAKE_LFLAGS +=oci.lib
INCLUDEPATH += E:\app\Administrator\product\11.2.0\dbhome_2\OCI\include
LIBPATH += E:\app\Administrator\product\11.2.0\dbhome_2\OCI\lib\MSVC

次に、OCIBindByPos 2関数が定義されていないエラーを報告し、qsql_を変更します.oci.cppファイルの1559行付近:r=OCIBindByPos(d->sql,&bindColumn.bindh,d->err,i+1,bindColumn.data,bindColumn.maxLen,bindColumn.bindAs,bindColumn.indicators,reinterpret_cast(bindColumn.lengths),                 0,                 arrayBind ? bindColumn.maxarr_len : 0,                 arrayBind ? &bindColumn.curelep : 0,                 OCI_DEFAULT);
再qmake、大丈夫、構築、qtsqldrivers-configが見つかりません.pri、ネット上で半日調べて、何が再びソースコードをダウンロードして、まあ、コンパイラを交換して、どうせコンパイラは多いです...
またmingw 73_を交換しました32でコンパイルするにはociを修正する必要がある.Proファイル:
QMAKE_USE+=ociをQMAKEに変更LFLAGS += E:\app\Administrator\product\11.2.0\dbhome_2\BIN\oci.dll
他の2行と同じ
そして間違えてociと言いましたdllは認識できません.
それから私はまたmingw 73_を交換しました64、今回は問題なく、コンパイルに成功し、駆動を生成しました.私はD:pluginssqldriversディレクトリの下で、qsqlociを生成しました.dll、qsqlocid.dllコピーD:Qt5.12.2mingw 73_64pluginssqldriversディレクトリ、そしてコードを書いてデータベースに接続し、新しいプロジェクトの.Proファイルに追加:
INCLUDEPATH += E:\app\Administrator\product\11.2.0\dbhome_2\OCI\include

その後コンパイル運転、エラー:rcを実行できません.exe、C:Program Files(x 86)Windows Kits10binx 64ディレクトリの下のrc.exe、rcdll.dllは対応するディレクトリにコピーされ、まだエラーが発生しています.の
大丈夫です.また交換します.今回はmsvc 2017_を使います.64、oci.Proの変更:
QMAKE_LFLAGS +=oci.lib

コンパイル構築に成功し、ドライブコピーをD:Qt5.12.2msvc 2017_64pluginssqldriversディレクトリ、データベースに接続するコードを再実行して、やっと成功しました!
前に出会った問題はすべて解決できるはずだが、時間は貴重で、需要を満たすことができればいい.