Qt と VTK を組み合わせようとすると、有名なリンク エラーが発生します。VTK を使用して Qt をインストールするすべての手順を正しく実行したので、何が問題なのかわかりません。
Visual StudioでQt5とVTK 6.3を搭載したWindows 8を使用しています。
これが私が得るエラーです:
Drawing.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: __thiscall QVTKWidget::QVTKWidget(class QWidget *,class QFlags<enum Qt::WindowType>)" (__imp_??0QVTKWidget@@QAE@PAVQWidget@@V?$QFlags@W4WindowType@Qt@@@@@Z) référencé dans la fonction "public: __thiscall Drawing::Drawing(void)" (??0Drawing@@QAE@XZ)
1>Drawing.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: virtual __thiscall QVTKWidget::~QVTKWidget(void)" (__imp_??1QVTKWidget@@UAE@XZ) référencé dans la fonction "public: __thiscall Drawing::~Drawing(void)" (??1Drawing@@QAE@XZ)
そして、ここに私が使用するコードがあります:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QVtk w;
w.show();
//start();
return a.exec();
}
私はここに書かれているすべてに従いました:ウィンドウで Qt 5.4.1 と vtk 6.2.0 (CMake GUI 3.2.1 を使用) を組み合わせますが、どういうわけかこのエラーが発生します。
また、「その他のインクルードディレクトリ」へ$(QTDIR)\lib
の追加ライブラリ と、追加の依存関係への以下を追加しました。$(QTDIR)\include
qtmaind.lib
C:\Users\Lonni\VTK\Build2012Qt\lib\MinSizeRel\QVTKWidgetPlugin.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Locationd.lib
Qt5Multimediad.lib
Qt5MultimediaWidgetsd.lib
Qt5Testd.lib
Qt5AxContainerd.lib
Qt5AxBased.lib
Qt5OpenGLd.lib
opengl32.lib
glu32.lib
Qt5Sensorsd.lib
Qt5Svgd.lib
Qt5Widgetsd.lib
編集:
wikiで提供されている小さな例でもCmakeを使用すると問題が発生し、次のCMakeLists.txtで次のエラーが発生するため、プロジェクトにCMakeを使用しませんでした。注意: Visual Studio をジェネレーターとして使用しています。
CMakeLists:
cmake_minimum_required(VERSION 2.8)
if(POLICY CMP0020)
cmake_policy(SET CMP0020 NEW)
endif()
PROJECT(RenderWindowNoUiFile)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4")
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets REQUIRED QUIET)
else()
find_package(Qt4 REQUIRED)
include(${QT_USE_FILE})
endif()
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
file(GLOB UI_FILES *.ui)
file(GLOB QT_WRAP *.h)
file(GLOB CXX_FILES *.cxx)
if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4")
qt5_wrap_ui(UISrcs ${UI_FILES} )
# CMAKE_AUTOMOC in ON so the MocHdrs will be automatically wrapped.
add_executable(RenderWindowNoUiFile MACOSX_BUNDLE
${CXX_FILES} ${UISrcs} ${QT_WRAP})
qt5_use_modules(RenderWindowNoUiFile Core Gui)
target_link_libraries(RenderWindowNoUiFile ${VTK_LIBRARIES})
else()
QT4_WRAP_UI(UISrcs ${UI_FILES})
QT4_WRAP_CPP(MOCSrcs ${QT_WRAP})
add_executable(RenderWindowNoUiFile MACOSX_BUNDLE ${CXX_FILES} ${UISrcs} ${MOCSrcs})
if(VTK_LIBRARIES)
if(${VTK_VERSION} VERSION_LESS "6")
target_link_libraries(RenderWindowNoUiFile ${VTK_LIBRARIES} QVTK)
else()
target_link_libraries(RenderWindowNoUiFile ${VTK_LIBRARIES})
endif()
else()
target_link_libraries(RenderWindowNoUiFile vtkHybrid QVTK vtkViews ${QT_LIBRARIES})
endif()
endif()
エラー: C:/Program Files (x86)/CMake/share/cmake-3.2/Modules/FindQt4.cmake:1326 での CMake エラー (メッセージ): NOTFOUND から不適切な Qt バージョン "" が見つかりました。このコードには Qt 4.x 呼び出しが必要ですスタック (最新の呼び出しが最初): CMakeLists.txt:18 (find_package)