プログラムコンパイルエラーレコードとソリューション
7340 ワード
2016.07.07
RGB-D SLAM(6)コンパイルg 2 oを一緒にするところでエラーを報告します.
Googleの神器を取り出して、ある大神を探して解読します:https://github.com/tum-vision/dvo_slam/issues/2g 2 oをインストールする前にlibsuitesparse-devをインストールしていないと言っていますが、今実行している場合は
インストールされていることに気づいたら、g 2 oをインストールしてから今日までにインストールされている可能性がありますので、g 2 oインストールパッケージに入ってインストールを再コンパイルし、RGB-D SLAMをコンパイルするプログラムはokです.
2016.07.07
一緒にRGB-D SLAM(5)を作っていますhttp://www.cnblogs.com/gaoxiang12/p/4719156.htmlエラーが発生しました:undefined reference to`cv::initModule_nonfree()’はinitModule_を意味しますnonfreeは定義されていません.理由が見つからず、校友のブログを検索しました.http://blog.csdn.net/zyh821351004/article/details/47322823このモジュールはインストールされていません.インストール方法は以下の通りです.
それからプログラムをコンパイルすればいいです.
2016.06.29自分でopencvの読み書きのピクチャーのプログラムを書いて、工事demoは高翔と一緒にRGBD(2)の中で構築したので、自分でソースファイルの中でいくつかの簡単なopencvの読み書きのピクチャーのプログラムを追加して、以下のエラーがあります:
原因を分析すると、ソースファイルコードを追加するまで依存項目が追加されていないことが判明し、ソースファイルと同級のCMakeLists.txt変更:FIND_PACKAGE( OpenCV REQUIRED ) add_executable( main main.cpp ) TARGET_LINK_LIBRARIES(main${OpenCV_LIBS})注意、順番を間違えてはいけません
2016.06.12 ‘ORB_SLAM-master’ depends on non-existent package ‘opencv2’ google:take out all opencv dependencies from the package.xml…. that does the trick. Since ROS Hyrdo, opencv is included in core solved:remove in manifest.xml in package
2016.06.13 ORB_SLAM :cmake+make successfully but when open CmakeLists.txt with Qt error: include could not find load file: /core/rosbuild/rosbuild.cmake CmakeLists.txt line2 open CmakeLists.txt in line2 we find that it should be error with $ENV{ROS_ROOT}:
so we write as:
2016.06.27 OpenCV SfMプログラムを深く理解する場合:
(1):’SURF_GPU’:is not a member of‘cv::gpu’Google発見SURF_GPUは/opencv 2/nonfree/gpuである.HPの中にあるのでGPUSURFFeatureMatcher.h追加
(2):Math/v 3 d_linear.h:No such file or directory GoogleはSSBA Libraryがインストールされていないことを発見しました.SSBAダウンロード後、cmake+makeは問題ありませんが、このライブラリパスをcmakeに見つけることはできません.最後に第三者ライブラリの問題を解決することはできません.呼び出した場所を絶対パスに変えました.includeまたは:CMakeLists.txt奥set(SSBA_LIBRARY_DIR"${CMAKE_SOURCE_DIR}/SBA-3.0/build"CACHE PATH"Directory to find SSBA libs")をset(SSBA_LIBRARY_DIR"/home/kylfan/program/mastering_opencv/chapter 4_StructuurFromMotion/SBA-3.0/build"CACHE PATH"Directory to find SSBA libs")(3):‘BruteForForForeForForeForForForForeForForForForForFortxt ceMatcher_GPU’was not declared in this scope、さっきgpuライブラリを変更したので、元のgpu.h加算:
(4):‘toROSMsg’is not a member of‘pcl’Googleちょっと:Visualization.cppに加える:
コンパイルパス!
実は上の多くの問題はopencvバージョンの問題によるもので、パソコンにインストールされているのは2.4.13なので、git公式サイトには2.4.2-2.4.11をサポートしていると明記されています.多くの問題は自分が公式サイトの説明をよく見ないことによるものです.
RGB-D SLAM(6)コンパイルg 2 oを一緒にするところでエラーを報告します.
CMakeFiles/slamEnd.dir/slamEnd.cpp.o: In function `g2o::LinearSolverCSparse<:matrix> >::solve(g2o::SparseBlockMatrix<:matrix> > const&, double*, double*)':
/opt/ros/indigo/include/g2o/solvers/csparse/linear_solver_csparse.h:126: undefined reference to `g2o::csparse_extension::cs_cholsolsymb(cs_di_sparse const*, double*, cs_di_symbolic const*, double*, int*)'
/opt/ros/indigo/include/g2o/solvers/csparse/linear_solver_csparse.h:130: undefined reference to `g2o::csparse_extension::writeCs2Octave(char const*, cs_di_sparse const*, bool)'
CMakeFiles/slamEnd.dir/slamEnd.cpp.o: In function `g2o::LinearSolverCSparse<:matrix> >::solveBlocks(double**&, g2o::SparseBlockMatrix<:matrix> > const&)':
/opt/ros/indigo/include/g2o/solvers/csparse/linear_solver_csparse.h:171: undefined reference to `g2o::csparse_extension::cs_chol_workspace(cs_di_sparse const*, cs_di_symbolic const*, int*, double*)'
CMakeFiles/slamEnd.dir/slamEnd.cpp.o: In function `g2o::LinearSolverCSparse<:matrix> >::solvePattern(g2o::SparseBlockMatrix<:matrix> >&, std::vector<:pair int="">, std::allocator<:pair int=""> > > const&, g2o::SparseBlockMatrix<:matrix> > const&)':
/opt/ros/indigo/include/g2o/solvers/csparse/linear_solver_csparse.h:208: undefined reference to `g2o::csparse_extension::cs_chol_workspace(cs_di_sparse const*, cs_di_symbolic const*, int*, double*)'
Googleの神器を取り出して、ある大神を探して解読します:https://github.com/tum-vision/dvo_slam/issues/2g 2 oをインストールする前にlibsuitesparse-devをインストールしていないと言っていますが、今実行している場合は
sudo apt-get install libsuitesparse-dev
インストールされていることに気づいたら、g 2 oをインストールしてから今日までにインストールされている可能性がありますので、g 2 oインストールパッケージに入ってインストールを再コンパイルし、RGB-D SLAMをコンパイルするプログラムはokです.
2016.07.07
一緒にRGB-D SLAM(5)を作っていますhttp://www.cnblogs.com/gaoxiang12/p/4719156.htmlエラーが発生しました:undefined reference to`cv::initModule_nonfree()’はinitModule_を意味しますnonfreeは定義されていません.理由が見つからず、校友のブログを検索しました.http://blog.csdn.net/zyh821351004/article/details/47322823このモジュールはインストールされていません.インストール方法は以下の通りです.
sudo add-apt-repository --yes ppa:xqms/opencv-nonfree
sudo apt-get update
sudo apt-get install libopencv-nonfree-dev
それからプログラムをコンパイルすればいいです.
2016.06.29自分でopencvの読み書きのピクチャーのプログラムを書いて、工事demoは高翔と一緒にRGBD(2)の中で構築したので、自分でソースファイルの中でいくつかの簡単なopencvの読み書きのピクチャーのプログラムを追加して、以下のエラーがあります:
CMakeFiles/main.dir/main.cpp.o: In function `cv::Mat::~Mat()':
main.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x69): undefined reference to `cv::Mat::deallocate()'
main.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x54): undefined reference to `cv::fastFree(void*)'
CMakeFiles/main.dir/main.cpp.o: In function `main':
main.cpp:(.text.startup+0xdf): undefined reference to `cv::imread(std::string const&, int)'
main.cpp:(.text.startup+0x176): undefined reference to `cv::Mat::copySize(cv::Mat const&)'
main.cpp:(.text.startup+0x1db): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
main.cpp:(.text.startup+0x201): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
main.cpp:(.text.startup+0x21b): undefined reference to `cv::waitKey(int)'
main.cpp:(.text.startup+0x284): undefined reference to `cv::Mat::deallocate()'
原因を分析すると、ソースファイルコードを追加するまで依存項目が追加されていないことが判明し、ソースファイルと同級のCMakeLists.txt変更:FIND_PACKAGE( OpenCV REQUIRED ) add_executable( main main.cpp ) TARGET_LINK_LIBRARIES(main${OpenCV_LIBS})注意、順番を間違えてはいけません
2016.06.12 ‘ORB_SLAM-master’ depends on non-existent package ‘opencv2’ google:take out all opencv dependencies from the package.xml…. that does the trick. Since ROS Hyrdo, opencv is included in core solved:remove in manifest.xml in package
2016.06.13 ORB_SLAM :cmake+make successfully but when open CmakeLists.txt with Qt error: include could not find load file: /core/rosbuild/rosbuild.cmake CmakeLists.txt line2 open CmakeLists.txt in line2 we find that it should be error with $ENV{ROS_ROOT}:
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
so we write as:
include(/opt/ros/indigo/share/core/rosbuild/rosbuild.cmake)
2016.06.27 OpenCV SfMプログラムを深く理解する場合:
(1):’SURF_GPU’:is not a member of‘cv::gpu’Google発見SURF_GPUは/opencv 2/nonfree/gpuである.HPの中にあるのでGPUSURFFeatureMatcher.h追加
#include
(2):Math/v 3 d_linear.h:No such file or directory GoogleはSSBA Libraryがインストールされていないことを発見しました.SSBAダウンロード後、cmake+makeは問題ありませんが、このライブラリパスをcmakeに見つけることはできません.最後に第三者ライブラリの問題を解決することはできません.呼び出した場所を絶対パスに変えました.includeまたは:CMakeLists.txt奥set(SSBA_LIBRARY_DIR"${CMAKE_SOURCE_DIR}/SBA-3.0/build"CACHE PATH"Directory to find SSBA libs")をset(SSBA_LIBRARY_DIR"/home/kylfan/program/mastering_opencv/chapter 4_StructuurFromMotion/SBA-3.0/build"CACHE PATH"Directory to find SSBA libs")(3):‘BruteForForForeForForeForForForForeForForForForForFortxt ceMatcher_GPU’was not declared in this scope、さっきgpuライブラリを変更したので、元のgpu.h加算:
#include
#include
(4):‘toROSMsg’is not a member of‘pcl’Googleちょっと:Visualization.cppに加える:
#include
コンパイルパス!
実は上の多くの問題はopencvバージョンの問題によるもので、パソコンにインストールされているのは2.4.13なので、git公式サイトには2.4.2-2.4.11をサポートしていると明記されています.多くの問題は自分が公式サイトの説明をよく見ないことによるものです.