Я пытался использовать плагин QOCI для QtSql, пока у меня не возникло несколько проблем: Почему плагин QOCI не работает
Однако оказалось, что это проблема загрузки библиотеки (по крайней мере, я так думаю), поэтому я решил сменить тему вопроса, так как это новый вопрос.
У меня есть файл dll (называемый qsqloci4.dll). Когда я пытаюсь загрузить его с помощью LoadLibrary,это терпит неудачу, и GetLastError возвращает ERROR_MOD_NOT_FOUND.Когда я пытаюсь загрузить его с помощью LoadLibraryEx, а 3-й параметр - DONT_RESOLVE_DLL_REFERENCES, загружается успешно (не возвращает NULL).
Итак, я подумал, что это проблема зависимости.Я открыл файл dll с помощью обходчика зависимостей, там было 2 файла, которые не удалось найти: QtCore4.dll и QtSql4.dll.Однако эти файлы находятся в рабочем каталоге приложения, и другие DLL-файлы, которые зависят от этих DLL-библиотек (например, qsqlpsql4.dll), успешно загружены.
Другие библиотеки DLL (которые находятся в обходе зависимостей):
- oci.dll: находится в той же папке, что и QtCore4.dll и QtSql4.dll, означает, что мое приложение может получить к нему доступ
- kernel32.dll: я считаю, что проще всего найти DLLмоим приложением
- msvscr80.dll: другие dll-файлы, которые используют это, могут быть успешно загружены.
Вот мой вопрос: данный обходчик зависимостей говорит: «У вас есть все dll, кроме qtединицы ", и я уверен, что у меня есть qt dll. Какова еще причина сбоя LoadLibrary с ERROR_MOD_NOT_FOUND?