我试图在使用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
答案 0 :(得分:0)
只是想回答我自己的问题,以防其他人遇到类似程序。我能够通过重新编译32位VTK并选择所有Cmake Qt选项并填写路径来解决这个问题。我在CMake中没有正确的路径,但是cmake并没有抱怨并生成VS解决方案文件。在我尝试重新编译VTK之前,我没有注意到20%的项目都失败了。
在尝试诊断链接器错误时,它并不神秘。有些东西不见了!只需逐个查看依赖项清单就可以解决它。