Qt5,VTK7,QtCreator:QVTKWidget链接器错误

时间:2016-02-13 21:54:20

标签: qt qt5 vtk qvtkwidget

我试图在使用QVTKWidget的Windows10上使用QTCreator构建应用程序,但是我收到了链接器错误:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl QVTKWidget::QVTKWidget(class QWidget *,class QFlags<enum Qt::WindowType>)" referenced in function "public: void __cdecl Ui_MainWindow::setupUi(class QMainWindow *)"

我已经为msvc2013和msvc2013_64下载了Qt5.5。我已经下载了VTK7,并使用CMake在Qt支持下构建了它。我建了一个vtk32和vtk64。我已将D:\VTK\vtk32\bin\Release\QVTKWidgetPlugin.dll复制到C:\Qt\Tools\QtCreator\bin\plugins\designer,当我启动QTCreator时,QVTKWidget显示在可用表单控件的QVTK部分的底部。

我将QVTKWidget添加到我的表单并使用msvc2013 Release构建应用程序。然后我得到链接器错误。我错过了哪些lib?

以下是我的.pro文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = MIViewer
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

win32 {
    INCLUDEPATH += D:\VTK\VTK-7.0.0\GUISupport\Qt
    INCLUDEPATH += D:\VTK\VTK-7.0.0\Common\Core
    INCLUDEPATH += D:\VTK\VTK-7.0.0\Rendering\Core
}

win32-msvc2013 {
    INCLUDEPATH += D:\VTK\vtk32\GUISupport\Qt
    INCLUDEPATH += D:\VTK\vtk32\Interaction\Style
    INCLUDEPATH += D:\VTK\vtk32\Rendering\Core
    INCLUDEPATH += D:\VTK\vtk32\Rendering\OpenGL2
    INCLUDEPATH += D:\VTK\vtk32\Common\Core
    LIBS += -LD:\VTK\vtk32\lib\Release
}

win32-msvc2013_64 {
    INCLUDEPATH += D:\VTK\vtk64\GUISupport\Qt
    INCLUDEPATH += D:\VTK\vtk64\Interaction\Style
    INCLUDEPATH += D:\VTK\vtk64\Rendering\Core
    INCLUDEPATH += D:\VTK\vtk64\Rendering\OpenGL2
    INCLUDEPATH += D:\VTK\vtk64\Common\Core
    LIBS += -LD:\VTK\vtk64\lib\Release
}

LIBS += -lQVTKWidgetPlugin \
        -lvtkGUISupportQt-7.0 \
        -lvtkRenderingQt-7.0

1 个答案:

答案 0 :(得分:0)

只是想回答我自己的问题,以防其他人遇到类似程序。我能够通过重新编译32位VTK并选择所有Cmake Qt选项并填写路径来解决这个问题。我在CMake中没有正确的路径,但是cmake并没有抱怨并生成VS解决方案文件。在我尝试重新编译VTK之前,我没有注意到20%的项目都失败了。

在尝试诊断链接器错误时,它并不神秘。有些东西不见了!只需逐个查看依赖项清单就可以解决它。