0

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)

4

0 に答える 0