QtSql に QOCI プラグインを使用しようとしていましたが、問題が発生するまで: QOCI プラグインが機能しない理由
ただし、ライブラリの読み込みの問題であることが判明したため(少なくとも私はそう思います)、新しい質問であるため、質問の主題を変更することにしました。
dll ファイル (qsqloci4.dll と呼ばれる) があります。LoadLibrary でロードしようとすると失敗し、GetLastError が ERROR_MOD_NOT_FOUND を返します。LoadLibraryEx でロードしようとすると、3 番目のパラメータが DONT_RESOLVE_DLL_REFERENCES で、正常にロードされます(NULL は返されません)。
だから、私はそれが依存関係の問題だと思った。dll ファイルを依存関係ウォーカーで開いたところ、QtCore4.dll と QtSql4.dll の 2 つのファイルが見つかりませんでした。ただし、これらのファイルはアプリケーションの作業ディレクトリにあり、これらの dll に依存する他の dll ファイル (qsqlpsql4.dll など) は正常にロードされます。
その他の dll (依存関係ウォーカーによって配置される) は次のとおりです。
- oci.dll : QtCore4.dll および QtSql4.dll と同じフォルダーにあり、アプリがアクセスできることを意味します
- kernel32.dll : アプリで見つけるのが最も簡単な dll だと思います
- msvscr80.dll : これを使用する他の dll ファイルは正常にロードできます。
これが私の質問です:依存関係ウォーカーが言うと:「あなたはqtのものを除くすべてのdllを持っています」と私はqt dllを持っていると確信しています.LoadLibraryがERROR_MOD_NOT_FOUNDで失敗する他の理由は何ですか?