QtとVTKを使用してプロジェクトを構築するのに問題があります。私はCmake 3.5.1、vtk7.1、Qt5.2.1を使用しています。私はcmakeの実行後にmakeを実行すると、私はこのエラーを取得:私CmakeLists.txtはこのようになりますQakeをcmakeでビルドするときの未定義の参照
CMakeFiles/MainWindow.dir/main.cpp.o: In function
main': main.cpp:(.text+0x10a): undefined reference to
MainWindow::MainWindow(QWidget*)' main.cpp:(.text+0x12f): undefined reference toMainWindow::~MainWindow()' main.cpp:(.text+0x1b5): undefined reference to
MainWindow::~MainWindow()' collect2: error: ld returned 1 exit status CMakeFiles/MainWindow.dir/build.make:218: recipe for target 'MainWindow' failed make[2]: * [MainWindow] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/MainWindow.dir/all' failed make[1]: * [CMakeFiles/MainWindow.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2
:
cmake_minimum_required(VERSION 2.8.8)
if(POLICY CMP0020)
cmake_policy(SET CMP0020 NEW)
endif()
if(POLICY CMP0025)
cmake_policy(SET CMP0025 NEW) # CMake 3.0
endif()
if(POLICY CMP0043)
cmake_policy(SET CMP0043 NEW) # CMake 3.0
endif()
if(POLICY CMP0053)
cmake_policy(SET CMP0053 NEW) # CMake 3.1
endif()
project(MainWindow)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
if("${VTK_QT_VERSION}" STREQUAL "")
message(FATAL_ERROR "VTK was not built with Qt")
endif()
set(Srcs main.cpp)
if(VTK_QT_VERSION VERSION_GREATER "4")
find_package(Qt5 COMPONENTS Core REQUIRED QUIET)
add_executable(MainWindow ${Srcs})
qt5_use_modules(MainWindow Core Gui Widgets)
target_link_libraries(MainWindow ${VTK_LIBRARIES})
else()
find_package(Qt4 REQUIRED)
include(${QT_USE_FILE})
# Use what VTK built with
set(QT_QMAKE_EXECUTABLE ${VTK_QT_QMAKE_EXECUTABLE} CACHE FILEPATH "")
set(QT_MOC_EXECUTABLE ${VTK_QT_MOC_EXECUTABLE} CACHE FILEPATH "")
set(QT_UIC_EXECUTABLE ${VTK_QT_UIC_EXECUTABLE} CACHE FILEPATH "")
include_directories(${QT_INCLUDE_DIR})
add_executable(MainWindow ${Srcs})
target_link_libraries(MainWindow ${QT_LIBRARIES} ${VTK_LIBRARIES})
endif()
エラーが短所と〜短所に関連付けられているように見えます。ここで私は、問題が生じていると思うメイン・ウィンドウCPPから抜粋されています。それは非常に長いので、私は、コンストラクタのボディを除外
class MainWindow : public QMainWindow
{
Q_OBJECT
/*signals:
void overVolume(int, int, int);*/
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow){
MainWindow::~MainWindow()
{
writeSettings();
axes->Delete();
marker->Delete();
delete ui;
}
、ここでは、ヘッダの一部であります私はそれがエラーとは関係がないとは思わない。
思考?