1

我正在尝试在使用 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.dllC:\Qt\Tools\QtCreator\bin\plugins\designer并启动 QTCreator 时,QVTKWidget 显示在可用表单控件的 QVTK 部分下方的底部。

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

下面是我的 .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
4

1 回答 1

0

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

在尝试诊断链接器错误时,这并不神秘。有什么东西不见了!只需一一检查依赖项清单即可为我解决。

于 2016-02-21T20:33:46.417 回答