Open norouzzadeh opened 9 years ago
had the same problem, but I'm using mingw. I solved the problem by including the header of ManipulatedFrame in the onlinefusionviewer.cpp
Hi heyglo, your suggestion worked for me on Ubuntu 14.04 Trusty by including QGLViewer/manipulatedFrame.h in the onlinefusionviewer.cpp
I had to do the same thing
did you get the meshcell size = 0 error? i see _meshCellsplit has 25,000 entries but then it tries to access _meshCells and crashes since its 0. another user, clonese1201, encountered this error #7 and i emailed him, he said he never resolved it.
i fixed it by adding
to definitions.h by doing that it enabled SWITCH_MESHCELLS_SPLIT which means _meshCells is pointing to _meshCellsSplit instead of _meshCellsCompact
Hello, I had the same problem of norouzzadeh . I have included QGLViewer/manipulatedFrame.h in the onlinefusionviewer.cpp and now I have this problem:
[ 80%] Built target geometryfusion_aos Linking CXX executable ../bin/onlinefusion CMakeFiles/onlinefusion.dir/onlinefusionviewer.cpp.o: nella funzione "OnlineFusionViewerManipulated::init()": onlinefusionviewer.cpp:(.text+0x533): riferimento non definito a "qglviewer::Camera::setPosition(qglviewer::Vec const&)" onlinefusionviewer.cpp:(.text+0x571): riferimento non definito a "qglviewer::Camera::setFieldOfView(double)" CMakeFiles/onlinefusion.dir/onlinefusionviewer.cpp.o: nella funzione "OnlineFusionViewerManipulated::fastDraw()": onlinefusionviewer.cpp:(.text+0x909): riferimento non definito a "QGLViewer::drawAxis(double)" CMakeFiles/onlinefusion.dir/onlinefusionviewer.cpp.o: nella funzione "OnlineFusionViewerManipulated::setScenePosition(CameraInfo)": onlinefusionviewer.cpp:(.text+0x299a): riferimento non definito a "qglviewer::Frame::setPosition(double, double, double)" CMakeFiles/onlinefusion.dir/moc_onlinefusionviewer.cxx.o: nella funzione "QGLViewer::setSceneRadius(double)": moc_onlinefusionviewer.cxx:(.text._ZN9QGLViewer14setSceneRadiusEd[_ZN9QGLViewer14setSceneRadiusEd]+0x5): riferimento non definito a "qglviewer::Camera::setSceneRadius(double)" CMakeFiles/onlinefusion.dir/moc_onlinefusionviewer.cxx.o:(.rodata._ZTV29OnlineFusionViewerManipulated[ZTV29OnlineFusionViewerManipulated]+0xd0): riferimento non definito a "QGLViewer::keyReleaseEvent(QKeyEvent)" CMakeFiles/onlinefusion.dir/moc_onlinefusionviewer.cxx.o:(.rodata._ZTV29OnlineFusionViewerManipulated[_ZTV29OnlineFusionViewerManipulated]+0x230): riferimento non definito a "QGLViewer::drawLight(unsigned int, double) const" CMakeFiles/onlinefusion.dir/moc_onlinefusionviewer.cxx.o:(.rodata._ZTV29OnlineFusionViewerManipulated[_ZTV29OnlineFusionViewerManipulated]+0x2e8): riferimento non definito a "QGLViewer::setKeyFrameKey(unsigned int, int)" CMakeFiles/onlinefusion.dir/moc_onlinefusionviewer.cxx.o:(.rodata._ZTV29OnlineFusionViewerManipulated[_ZTV29OnlineFusionViewerManipulated]+0x2f0): riferimento non definito a "QGLViewer::setPlayKeyFramePathStateKey(unsigned int)" CMakeFiles/onlinefusion.dir/moc_onlinefusionviewer.cxx.o:(.rodata._ZTV29OnlineFusionViewerManipulated[_ZTV29OnlineFusionViewerManipulated]+0x2f8): riferimento non definito a "QGLViewer::setPlayPathStateKey(unsigned int)" CMakeFiles/onlinefusion.dir/moc_onlinefusionviewer.cxx.o:(.rodata._ZTV29OnlineFusionViewerManipulated[_ZTV29OnlineFusionViewerManipulated]+0x300): riferimento non definito a "QGLViewer::setAddKeyFrameStateKey(unsigned int)" CMakeFiles/onlinefusion.dir/moc_onlinefusionviewer.cxx.o:(.rodata._ZTV29OnlineFusionViewerManipulated[ZTV29OnlineFusionViewerManipulated]+0x308): riferimento non definito a "QGLViewer::setPathKey(int, unsigned int)" collect2: error: ld returned 1 exit status make[2]: ** [bin/onlinefusion] Errore 1 make[1]: * [src/CMakeFiles/onlinefusion.dir/all] Errore 2 make: * [all] Errore 2
Thank you.
it looks like a linking error. 2 things to check: Check your project properties -Configuration Properties-Linker-General- additional library directories. Here is what I had:
C:\whereyoudownloaded\libQGLViewer-2.6.3\QGLViewer C:\whereyoudownloaded\libQGLViewer-2.6.3\QGLViewer\$(Configuration)
Check your project properties -Configuration Properties-Linker-Input-Additional Dependencies. Here is what I have:
C:\whereyoudownloaded\libQGLViewer-2.6.3\libQGLViewer-2.6.3\QGLViewer\QGLViewerd2.lib
What is your operative system?
windows 8.1, running visual studio 2010. also i had to build everything in 64bit mode
On Thu, Oct 22, 2015 at 9:32 AM MicheleMola notifications@github.com wrote:
What is your operative system?
— Reply to this email directly or view it on GitHub https://github.com/tum-vision/fastfusion/issues/6#issuecomment-150281608 .
I am throwing this project with cmake, from terminal of Ubuntu. Thank you for your answer.
I cannot solve.
I also used cmake. let me attach some of the cmake files. but i set the build target for visual studio 2010 64bit. so not sure if that changes things. I labeld the cmake files with the name of the directory it resides in, since they normally all have the same name.
On Thu, Oct 22, 2015 at 11:50 AM MicheleMola notifications@github.com wrote:
I cannot solve.
— Reply to this email directly or view it on GitHub https://github.com/tum-vision/fastfusion/issues/6#issuecomment-150320810 .
cmake_minimum_required(VERSION 2.8)
set(CMAKE_BUILD_TYPE Release)
set (CMAKE_PREFIX_PATH "E:/opencv3.0/build")
find_package(OpenCV REQUIRED COMPONENTS core imgproc highgui calib3d) if(OpenCV_FOUND) message(STATUS "OpenCV version ${OpenCV_VERSION} was found, Success!") message(STATUS " include ${OpenCV_INCLUDE_DIRS}") INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
#BULLSHIT it links the 32bit libraries. im gonna manually link this shit
LINK_DIRECTORIES("E:/opencv3.0/build/lib")
#message(STATUS " lib dirs ${OpenCV_LIB_DIR}")
#message(STATUS " libs ${OpenCV_LIBS}")
#message(STATUS " cmake build type ${CMAKE_BUILD_TYPE}")
#message(STATUS " arch ${OpenCV_ARCH}")
endif()
set(BOOST_ROOT "E:/Users/Mohamed/Downloads/boost_1_47_0/boost_1_47_0")#"C:/Program Files (x86)/PCL 1.6.0/3rdParty/Boost")
set(BOOST_LIBRARYDIR "E:/Users/Mohamed/Downloads/boost_1_47_0/boost_1_47_0/libs") set(Boost_USE_STATIC_LIBS ON) #for better performance, takes up a little more memory but we are only added system and thread set(Boost_USE_MULTITHREADED ON) set(Boost_THREADAPI "win32") #Mohamed - telling it to use win32 threads not pthreads (this is fine for x64) find_package(Boost 1.47 EXACT REQUIRED COMPONENTS thread system) #1.47
if(Boost_FOUND) message(STATUS "Boost was found, Success!") message(STATUS " include dirs: ${Boost_INCLUDE_DIRS}") message(STATUS " library dirs: ${Boost_LIBRARY_DIRS}") message(STATUS " libraries: ${Boost_LIBRARIES}") INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) endif()
set(Boost_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
LIST(APPEND CMAKE_MODULE_PATH "E:/Intel/INDE/tbb_4.3.4/cmakeModule") #i downloaded a cmake module here
set(TBB_ROOT "E:/Intel/INDE/tbb_4.3.4") set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS ON) find_package(TBB) if(NOT TBB_FOUND) MESSAGE(STATUS "TBB not found!") else(NOT TBB_FOUND) include_directories(${TBB_INCLUDE_DIRS}) link_directories(${TBB_LIBRARY_DIRS}) endif(NOT TBB_FOUND)
LIST(APPEND CMAKE_MODULE_PATH "E:/Intel/INDE/ipp_8.2.1.012/cmakeModule") #i downloaded a cmake module here set(IPP_ROOT "E:/Intel/INDE/ipp_8.2.1.012/Windows/x64/ipp") set(IPP_ARCH x64) find_package(IPP) if(NOT IPP_FOUND) MESSAGE(STATUS "IPP not found!") else(NOT IPP_FOUND) MESSAGE(STATUS "IPP was found, Success!") include_directories(${IPP_INCLUDE_DIRS}) link_directories(${IPP_LIBRARIES}) endif(NOT IPP_FOUND)
if (CMAKE_COMPILER_IS_GNUCC) execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) string(REGEX MATCHALL "[0-9]+" GCC_VERSION_COMPONENTS ${GCC_VERSION}) list(GET GCC_VERSION_COMPONENTS 0 GCC_MAJOR) list(GET GCC_VERSION_COMPONENTS 1 GCC_MINOR)
message(STATUS "GCC Major Version is " ${GCC_MAJOR})
message(STATUS "GCC Major Version is " ${GCC_MINOR})
endif()
set(CMAKE_C_FLAGS -frounding-math
)
message(STATUS "Compiling without AVX/AVX2 support")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
include_directories(${PROJECT_SOURCE_DIR}/src) message(STATUS "PROJECT_SOURCE_DIR is " ${PROJECT_SOURCE_DIR}) include_directories(${PROJECT_SOURCE_DIR}/src/mohamed_util)
include_directories("C:/Program Files (x86)/PCL 1.6.0/3rdParty/Eigen/include") include_directories("E:/Users/Mohamed/Downloads/glew-1.12.0-win32/glew-1.12.0/include")
find_package(Doxygen) if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "generating docs with Doxygen" VERBATIM ) endif(DOXYGEN_FOUND)
add_subdirectory(src)
add_subdirectory(camerautils) add_subdirectory(auxiliary)
add_subdirectory(fusion)
include_directories(${PROJECT_SOURCE_DIR}/src/mohamed_util)
message("! ! SRC CMAKELIST")
set(GLEW_INCLUDE_DIR "E:/Users/Mohamed/Downloads/glew-1.12.0-win32/glew-1.12.0/include") include_directories(${GLEW_INCLUDE_DIR}) link_directories("E:/Users/Mohamed/Downloads/glew-1.12.0-win32/glew-1.12.0/lib/Release/x64") #Win32 for 32bit x86
# message(STATUS "Threads was found, Success!")
ADD_DEFINITIONS(${QT_DEFINITIONS})
set(QGLVIEWER_ROOT "E:/Users/Mohamed/Downloads/libQGLViewer-2.6.3/libQGLViewer-2.6.3") LIST(APPEND CMAKE_MODULE_PATH ${QGLVIEWER_ROOT}) #i downloaded a cmake module here FIND_PACKAGE(QGLViewer) if(QGLVIEWER_FOUND) message(STATUS "QGLViewer was found, Success!")
#message(STATUS "QGLVIEWER_LIBRARY_DIR: ${QGLVIEWER_LIBRARY_DIR}")
INCLUDE_DIRECTORIES(${QGLVIEWER_INCLUDE_DIR})
LINK_DIRECTORIES(${QGLVIEWER_LIBRARY_DIR})
endif()
include_directories("E:/Qt/5.5.0/include") include_directories("E:/Qt/5.5.0/include/Qt") include_directories("E:/Qt/5.5.0/include/QtCore") include_directories("E:/Qt/5.5.0/include/QtXml") include_directories("E:/Qt/5.5.0/include/QtGui") include_directories("E:/Qt/5.5.0/include/QtOpenGL") link_directories("E:/Qt/5.5.0/lib")
set (CMAKE_PREFIX_PATH "E:/Qt/qt-5.5.0-x64-msvc2010-rev0/qt-5.5.0-x64-msvc2010-rev0/")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
cmake_policy(SET CMP0020 NEW) FIND_PACKAGE(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Xml)
QT5_WRAP_CPP(onlinefusion_HEADERS_MOC onlinefusionviewer.hpp) QT5_WRAP_CPP(sources $ {moc-sources}
OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED) if (Qt5_FOUND) message(STATUS "Found Qt5, Success!")
endif()
add_executable(onlinefusion onlinefusionviewer_main.cpp
${onlinefusion_HEADERS_MOC} onlinefusionviewer.cpp )
target_link_libraries(onlinefusion
${Boost_LIBRARIES} geometryfusion_mipmap_cpu geometryfusion_aos camerautils auxiliary
${OpenCV_LIBS} ${QGLVIEWER_LIBRARIES} Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Xml glew32 opengl32
)
include_directories("E:/Qt/5.5.0/include") include_directories("E:/Qt/5.5.0/include/Qt") include_directories("E:/Qt/5.5.0/include/QtCore") include_directories("E:/Qt/5.5.0/include/QtXml") include_directories("E:/Qt/5.5.0/include/QtGui") include_directories("E:/Qt/5.5.0/include/QtOpenGL") ADD_DEFINITIONS(${QT_DEFINITIONS})
include_directories("..") include_directories(${PROJECT_SOURCE_DIR}/src/mohamed_util)
include_directories(${GLEW_INCLUDE_DIR})
message("Including boost in the geometry fusion libraries: ${Boost_INCLUDE_DIR}") include_directories(${Boost_INCLUDE_DIR}) message("! ! GEOMETRY FUSION CMAKELIST") message(" - OpenCV_LIBS is ${OpenCV_LIBS}")
add_library(geometryfusion_aos STATIC geometryfusion_aos.cpp treeandbrick.cpp treeandbrick_indexed.cpp treeandbrick_incremental.cpp treeandbrick_incremental_recursive.cpp mesh.cpp
mesh_interleaved.cpp mesh_interleaved_meshcell.cpp ) target_link_libraries(geometryfusion_aos
${OpenCV_LIBS} ) add_library(geometryfusion_mipmap_cpu STATIC geometryfusion_mipmap_cpu.cpp loopclosure.cpp ) target_link_libraries(geometryfusion_mipmap_cpu
)
Yes, I have the CMakeLists.txt. But I have that problem, on Visual Studio are You able to run the project? Thank you.
yes. what is your email address and we can do some 1:1 emails to stop spamming everyone else
Dear @mobooya , I want to compile the source code on Windows but those CMake files were written in Linux-style such I am not be able to generate. Could you please give me some hints about it, I am new with CMake. Thanks in advance.
cmake says: Did not find qglviewer2, linking qglviewer-qt4
While libqglviewer-qt4-2, libqglviewer-qt4-dev are installed. During the build the following error occurs:
./fastfusion-master/src/onlinefusionviewer.cpp: In member function ‘virtual void OnlineFusionViewerManipulated::init()’: ./fastfusion-master/src/onlinefusionviewer.cpp:463:55: error: invalid use of incomplete type ‘struct qglviewer::ManipulatedFrame’ /usr/include/QGLViewer/qglviewer.h:36:7: error: forward declaration of ‘struct qglviewer::ManipulatedFrame’ ./fastfusion-master/src/onlinefusionviewer.cpp: In member function ‘void OnlineFusionViewerManipulated::setScenePosition(CameraInfo)’: ./fastfusion-master/src/onlinefusionviewer.cpp:533:20: error: invalid use of incomplete type ‘struct qglviewer::ManipulatedFrame’ /usr/include/QGLViewer/qglviewer.h:36:7: error: forward declaration of ‘struct qglviewer::ManipulatedFrame’ ./fastfusion-master/src/onlinefusionviewer.cpp:534:20: error: invalid use of incomplete type ‘struct qglviewer::ManipulatedFrame’ /usr/include/QGLViewer/qglviewer.h:36:7: error: forward declaration of ‘struct qglviewer::ManipulatedFrame’ ./fastfusion-master/src/onlinefusionviewer.cpp: In member function ‘virtual void OnlineFusionViewerManipulated::draw()’: ./fastfusion-master/src/onlinefusionviewer.cpp:555:35: error: invalid use of incomplete type ‘struct qglviewer::ManipulatedFrame’ /usr/include/QGLViewer/qglviewer.h:36:7: error: forward declaration of ‘struct qglviewer::ManipulatedFrame’ ./fastfusion-master/src/onlinefusionviewer.cpp: In member function ‘virtual void OnlineFusionViewerManipulated::fastDraw()’: ./fastfusion-master/src/onlinefusionviewer.cpp:585:35: error: invalid use of incomplete type ‘struct qglviewer::ManipulatedFrame’ /usr/include/QGLViewer/qglviewer.h:36:7: error: forward declaration of ‘struct qglviewer::ManipulatedFrame’ make[2]: * [src/CMakeFiles/onlinefusion.dir/onlinefusionviewer.cpp.o] Error 1 make[1]: * [src/CMakeFiles/onlinefusion.dir/all] Error 2 make: *\ [all] Error 2