Подтвердить что ты не робот

QT Ошибка создания точки входа DLL

Я создал приложение в Qt Creator, которое выполняет некоторую обработку изображений с помощью CImg. Он работает нормально, когда я запускаю его из внутренней среды IDE, но если я попытаюсь запустить его из его каталога, он выдает следующую ошибку.

The procedure entry point [email protected]@[email protected]$$QAV0AAZ could not be located 
in the dynamic link library QtCore4.dll

Все указывает на то, что установлена ​​несколько версий DLL. Я обнаружил, что моя Xilinx IDE использует библиотеки Qt, но соответствующие DLL файлы имеют одинаковую версию. Я на самом деле не специалист по программному обеспечению, и в затруднительном положении.

4b9b3361

Ответ 1

Даже если версия библиотеки одинакова, они могут быть несовместимыми. Например, они были скомпилированы с различными конфигурациями, например, с поддержкой STL или без нее, OpenGL, SQL-драйверами...

Самый простой способ исправить это должен состоять в перемещении пути Qt SDK в начале переменной среды PATH. Таким образом, всякий раз, когда вы запускаете исполняемый файл, который требует библиотеки Qt, он загружает те, которые поставляются с SDK (первые из них найдены в PATH), если в исполняемом каталоге уже нет экземпляров QtCore4.dll, QtGui4.dll..., По этой причине, если вы перераспределяете свое приложение, вам также может потребоваться отправка библиотек в его каталог.

Другим вариантом является статическая привязка, но вам потребуется предоставить исходный код под лицензией (L) GPL.

Ответ 2

Используйте DependencyWalker для списка, из которого загружается qtcore4.dll. У меня была та же проблема - DependencyWalker показал мне, что qtcore4.dll был загружен из c:\windows\system32 - но в этой папке не было qtcore4.dll.

Остерегайтесь: в Windows 7 64 бит c:\windows\SysWOW64 "отображается" как c:\windows\system32. И в этой папке я нашел dll - я переименовал dll, и проблема была решена.

Смотрите этот ответ здесь: Новое приложение Qt для Gui при запуске, ошибка в QtCore4.dll

Ответ 3

Статическая связь библиотек устраняет проблему.