VS2015 + VTK 7.1.0 + Qt 5.8.0 с запущенными примерами Qt из-за сбоя точки входа VTK
В настоящее время я пытаюсь использовать библиотеку VTK в сочетании с Qt для создания приложения для визуализации STL-файлов. Для начала я установил следующие библиотеки / программы:
- Visual Studio 2015 Professional
- CMake 3.7.0
- VTK 7.1.0
- Qt 5.8.0
Для Qt я использовал версию, скомпилированную для vs2015, а именно:
- кварты-OpenSource-Windows-x86-msvc2015_64-5.8.0.exe
После выполнения инструкций, предоставленных Kitware, все выглядит нормально, я не получил никаких ошибок при настройке и сборке VTK. Тогда я решил использовать пример кода ВТК в качестве отправной точки.
Снова связывание и сборка приложения прошли хорошо, но как только я попытался запустить приложение, я получил следующую ошибку:
Точка входа в процедуру? RgbSwapped@QImage@@QEHAA$$QEAV1@Z не может быть расположена в библиотеке динамических ссылок C:\VTK\bin\bin\Release\vtkGUISupportQt-7.1.dll.
Я искал решение, но не могу найти. Я также пробовал другие версии VTK и Qt, но я все еще получаю эту ошибку. Например, сегодня утром я попробовал VTK 6.3.0 в сочетании с Qt 4.8.5, снова все пошло хорошо, пока я не попытался запустить какой-то код, на этот раз я получил эту ошибку:
Не удалось найти точку входа в процедуру? DoItemsLayout@QTableView@@UAEXXZ в библиотеке динамических ссылок C:\VTK\bin\bin\Release\vtkGUISupportQt-6.3.dll.
Если у кого-то есть опыт с такого рода ошибками, пожалуйста, дайте мне знать.
2 ответа
У меня такая же проблема. Мне кажется странным, почему система не видит QT dll в $PATH, но если вы поместите Qt dll в исполняемый каталог, он будет работать нормально. может быть, кто-то с большим опытом может объяснить это поведение.
Мне кажется странным, почему система не видит QT dll в $PATH, но если вы поместите Qt dll в исполняемый каталог, он будет работать нормально.
Это зависит от того, как библиотеки DLL находятся в Windows. Подробнее см. Порядок поиска в библиотеке Dynamic-Link. По этой причине я всегда помещаю необходимые библиотеки DLL в каталог исполняемых файлов, чтобы использовать правильную версию DLL. Хорошо иметь список необходимых библиотек DLL, так как эти библиотеки также необходимо будет доставлять конечным пользователям.