VS2015 + VTK 7.1.0 + Qt 5.8.0 запускает примеры Qt из-за сбоя точки входа VTK

В настоящее время я пытаюсь использовать библиотеку VTK в сочетании с Qt для создания приложения для визуализации STL-файлов. Для начала я установил следующие библиотеки/программы:

  • Visual Studio 2015 Профессиональная
  • CMake 3.7.0
  • ВТК 7.1.0
  • Qt 5.8.0

Для Qt я использовал версию, скомпилированную для vs2015, а именно:

  • qt-opensource-windows-x86-msvc2015_64-5.8.0.exe

После следования инструкциям, предоставленным Kitware, все вроде нормально, я не получил любые ошибки при настройке и сборке VTK. Тогда я решил использовать пример кода 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.

Если у кого-то есть опыт с такими ошибками, пожалуйста, сообщите мне.


person Plzzz    schedule 27.01.2017    source источник


Ответы (2)


У меня такая же проблема. Мне кажется странным, почему система не видит QT dll в $PATH, но если вы поместите Qt dll в свой исполняемый каталог, он будет работать нормально. возможно, кто-то с большим опытом может объяснить это поведение.

person Renat    schedule 01.02.2017
comment
Спасибо, это решило мою проблему. Я думал, что ошибка вызвана файлами .dll от VTK, но, видимо, я ошибался. - person Plzzz; 02.02.2017

Мне кажется странным, почему система не видит QT dll в $PATH, но если вы поместите Qt dll в свой исполняемый каталог, он будет работать нормально.

Это зависит от того, как Windows находит библиотеки DLL. См. Порядок поиска в библиотеке Dynamic-Link. для получения подробной информации. По этой причине я всегда помещаю необходимые библиотеки DLL в исполняемый каталог, чтобы использовать правильную версию DLL. Хорошо иметь список необходимых библиотек DLL, так как эти библиотеки DLL также необходимо будет отправить конечным пользователям.

person Eric Chiang    schedule 09.02.2017