urbste / MultiCol-SLAM

This repository contains a multi-fisheye camera SLAM. The underlying SLAM system is based on ORB-SLAM.
604 stars 220 forks source link

build failing on Windows 10 #5

Closed FreedomRings closed 7 years ago

FreedomRings commented 7 years ago

I have gotten everything to work - doing my own fresh GitHub loads for Eigen, Pangolin and OpenCV. My problem comes when I hit opengv. This is the message I get from main.cpp when I try to build opengv:

1>------ Build started: Project: opengv, Configuration: Release Win32 ------
1>  main.cpp
1>C:\Users\Jeff\Documents\GitHub\MultiCol-SLAM\ThirdParty\OpenGV\src\absolute_pose\modules\main.cpp(284): error C2280: 'Eigen::Block<Derived,3,1,true> &Eigen::Block<Derived,3,1,true>::operator =(const Eigen::Block<Derived,3,1,true> &)': attempting to reference a deleted function
1>          with
1>          [
1>              Derived=Eigen::Matrix<double,3,3,0,3,3>
1>          ]
1>  c:\users\jeff\documents\github\multicol-slam\thirdparty\opengv\third_party\eigen\src/Core/Block.h(143): note: compiler has generated 'Eigen::Block<Derived,3,1,true>::operator =' here
1>          with
1>          [
1>              Derived=Eigen::Matrix<double,3,3,0,3,3>
1>          ]
1>========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
FreedomRings commented 7 years ago

I got that same error when I used the version under ThirdParty - which is the reason I went to fresh downloads. It made no difference in my error. I had 19 more errors when I had "Tests" checked. When I unchecked that this was the only error that remained.

urbste commented 7 years ago

Hi, so I can't reproduce the error as I am not running a Win10 32-bit system. Also you did not specify a compiler. It looks there is an error in a modul of OpenGV you don't really need. So just try to comment line 284 and 285.

Further I strongly suggest to run MultiCol-SLAM on a modern 64-bit system. I guess there are a couple of things in the code that might go wrong on a 32-bit system...

FreedomRings commented 7 years ago

I am not running a 32-bit system. It is 64-bit i7 running 64-bit Windows 10 Professional. What I sadly do not have is the money to pay MSDN subscription fees for the privilege to compile 64-bit - so I am seemingly stuck either making MultiCOL work as Win32 or trying to run it in a Linux virtual machine under Windows but that just seems... wrong.

Can this be done, and if so, is there a performance hit that might preclude it from working?

Also, I was planning on doing this with 2 cameras with 170 degree FOV. Is there an issue using fewer than 3 cameras?

urbste commented 7 years ago

Hey. Ok so I never heard about those subscription fees?! Is it not possible to use the Visual Studio Community Edition. I can compile 64bit without problems or paying any fees.

But anyways... The result of a SLAM that runs on multiple threads highly depends on the computational power of the CPU. Actually, my colleague is running it on his laptop having an i7 which is several generations more up to date than mine and gets even better/more stable results. I never tried it in a virtual machine and do not have that expertise of how much of the CPU resources it consumes. But do not assign less than 4 physical cores to it, as you'll have at least 4 threads running in parallel.

Using less than three cameras is absolutely no problem. You can actually use as many as you want. Try turning of one camera from the sample dataset and it will still work.

FreedomRings commented 7 years ago

Interestingly, it appears that the Win64 came with an update to Visual Studio. Who knew? I have updated the computer and Visual Studio so I am now running with 6 cores and Release/x64. I recloned all of the projects and they have all have been compiled using your instructions up until this same step again. The error code I get is below:

Severity    Code    Description Project File    Line    Suppression State
Error   C2280   'Eigen::Block<Derived,3,1,true> &Eigen::Block<Derived,3,1,true>::operator =(const Eigen::Block<Derived,3,1,true> &)': attempting to reference a deleted function    opengv  V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\src\absolute_pose\modules\main.cpp 284 

When I comment those 2 instructions commented out, I get a lot more output, but very little joy in the make (2 succeed and 20 fail):

1>------ Build started: Project: ZERO_CHECK, Configuration: Release x64 ------
1>  Checking Build System
1>  CMake does not need to re-run because V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/build/CMakeFiles/generate.stamp is up-to-date.
2>------ Build started: Project: opengv, Configuration: Release x64 ------
3>------ Build started: Project: random_generators, Configuration: Release x64 ------
2>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
3>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
2>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
3>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
2>  main.cpp
3>  random_generators.cpp
3>  experiment_helpers.cpp
3>  time_measurement.cpp
3>experiment_helpers.obj : error LNK2019: unresolved external symbol "class Eigen::Matrix<double,3,3,0,3,3> __cdecl opengv::math::cayley2rot(class Eigen::Matrix<double,3,1,0,3,1> const &)" (?cayley2rot@math@opengv@@YA?AV?$Matrix@N$02$02$0A@$02$02@Eigen@@AEBV?$Matrix@N$02$00$0A@$02$00@4@@Z) referenced in function "void __cdecl opengv::getPerturbedPose(class Eigen::Matrix<double,3,1,0,3,1> const &,class Eigen::Matrix<double,3,3,0,3,3> const &,class Eigen::Matrix<double,3,1,0,3,1> &,class Eigen::Matrix<double,3,3,0,3,3> &,double)" (?getPerturbedPose@opengv@@YAXAEBV?$Matrix@N$02$00$0A@$02$00@Eigen@@AEBV?$Matrix@N$02$02$0A@$02$02@3@AEAV23@AEAV43@N@Z)
3>experiment_helpers.obj : error LNK2019: unresolved external symbol "class Eigen::Matrix<double,3,1,0,3,1> __cdecl opengv::math::rot2cayley(class Eigen::Matrix<double,3,3,0,3,3> const &)" (?rot2cayley@math@opengv@@YA?AV?$Matrix@N$02$00$0A@$02$00@Eigen@@AEBV?$Matrix@N$02$02$0A@$02$02@4@@Z) referenced in function "void __cdecl opengv::getPerturbedPose(class Eigen::Matrix<double,3,1,0,3,1> const &,class Eigen::Matrix<double,3,3,0,3,3> const &,class Eigen::Matrix<double,3,1,0,3,1> &,class Eigen::Matrix<double,3,3,0,3,3> &,double)" (?getPerturbedPose@opengv@@YAXAEBV?$Matrix@N$02$00$0A@$02$00@Eigen@@AEBV?$Matrix@N$02$02$0A@$02$02@3@AEAV23@AEAV43@N@Z)
3>V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\lib\Release\random_generators.dll : fatal error LNK1120: 2 unresolved externals
2>v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen\src/Core/SolveTriangular.h(189): error C2280: 'Eigen::Block<Derived,-1,1,false> &Eigen::Block<Derived,-1,1,false>::operator =(const Eigen::Block<Derived,-1,1,false> &)': attempting to reference a deleted function
2>          with
2>          [
2>              Derived=Eigen::Matrix<double,-1,1,0,-1,1>
2>          ]
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen\src/Core/Block.h(143): note: compiler has generated 'Eigen::Block<Derived,-1,1,false>::operator =' here
2>          with
2>          [
2>              Derived=Eigen::Matrix<double,-1,1,0,-1,1>
2>          ]
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen\src/Core/TriangularMatrix.h(342): note: see reference to function template instantiation 'void Eigen::TriangularView<const Derived,2>::solveInPlace<Eigen::OnTheLeft,Eigen::Block<Eigen::Matrix<double,-1,1,0,-1,1>,-1,1,false>>(const Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<double,-1,1,0,-1,1>,-1,1,false>> &) const' being compiled
2>          with
2>          [
2>              Derived=Eigen::Block<const Eigen::Matrix<double,-1,-1,0,-1,-1>,-1,-1,false>
2>          ]
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen\src/Core/TriangularMatrix.h(342): note: see reference to function template instantiation 'void Eigen::TriangularView<const Derived,2>::solveInPlace<Eigen::OnTheLeft,Eigen::Block<Eigen::Matrix<double,-1,1,0,-1,1>,-1,1,false>>(const Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<double,-1,1,0,-1,1>,-1,1,false>> &) const' being compiled
2>          with
2>          [
2>              Derived=Eigen::Block<const Eigen::Matrix<double,-1,-1,0,-1,-1>,-1,-1,false>
2>          ]
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen3\unsupported\eigen\src/NonLinearOptimization/lmpar.h(202): note: see reference to function template instantiation 'void Eigen::TriangularView<const Derived,2>::solveInPlace<Eigen::Block<Eigen::Matrix<double,-1,1,0,-1,1>,-1,1,false>>(const Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<double,-1,1,0,-1,1>,-1,1,false>> &) const' being compiled
2>          with
2>          [
2>              Derived=Eigen::Block<const Eigen::Matrix<double,-1,-1,0,-1,-1>,-1,-1,false>
2>          ]
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen3\unsupported\eigen\src/NonLinearOptimization/lmpar.h(202): note: see reference to function template instantiation 'void Eigen::TriangularView<const Derived,2>::solveInPlace<Eigen::Block<Eigen::Matrix<double,-1,1,0,-1,1>,-1,1,false>>(const Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<double,-1,1,0,-1,1>,-1,1,false>> &) const' being compiled
2>          with
2>          [
2>              Derived=Eigen::Block<const Eigen::Matrix<double,-1,-1,0,-1,-1>,-1,-1,false>
2>          ]
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen3\unsupported\eigen\src/NonLinearOptimization/LevenbergMarquardt.h(268): note: see reference to function template instantiation 'void Eigen::internal::lmpar2<Scalar>(const Eigen::ColPivHouseholderQR<Eigen::Matrix<double,-1,-1,0,-1,-1>> &,const Eigen::Matrix<double,-1,1,0,-1,1> &,const Eigen::Matrix<double,-1,1,0,-1,1> &,Scalar,Scalar &,Eigen::Matrix<double,-1,1,0,-1,1> &)' being compiled
2>          with
2>          [
2>              Scalar=double
2>          ]
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen3\unsupported\eigen\src/NonLinearOptimization/LevenbergMarquardt.h(208): note: while compiling class template member function 'Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<Eigen::NumericalDiff<opengv::absolute_pose::modules::GpnpOptimizationFunctor,Eigen::Forward>,double>::minimizeOneStep(Eigen::Matrix<double,-1,1,0,-1,1> &)'
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen3\unsupported\eigen\src/NonLinearOptimization/LevenbergMarquardt.h(157): note: see reference to function template instantiation 'Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<Eigen::NumericalDiff<opengv::absolute_pose::modules::GpnpOptimizationFunctor,Eigen::Forward>,double>::minimizeOneStep(Eigen::Matrix<double,-1,1,0,-1,1> &)' being compiled
2>  v:\githubrepostitory\multicol-slam\thirdparty\opengv\third_party\eigen3\unsupported\eigen\src/NonLinearOptimization/LevenbergMarquardt.h(152): note: while compiling class template member function 'Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<Eigen::NumericalDiff<opengv::absolute_pose::modules::GpnpOptimizationFunctor,Eigen::Forward>,double>::minimize(Eigen::Matrix<double,-1,1,0,-1,1> &)'
2>  V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\src\absolute_pose\modules\main.cpp(1038): note: see reference to function template instantiation 'Eigen::LevenbergMarquardtSpace::Status Eigen::LevenbergMarquardt<Eigen::NumericalDiff<opengv::absolute_pose::modules::GpnpOptimizationFunctor,Eigen::Forward>,double>::minimize(Eigen::Matrix<double,-1,1,0,-1,1> &)' being compiled
2>  V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\src\absolute_pose\modules\main.cpp(1032): note: see reference to class template instantiation 'Eigen::LevenbergMarquardt<Eigen::NumericalDiff<opengv::absolute_pose::modules::GpnpOptimizationFunctor,Eigen::Forward>,double>' being compiled
4>------ Build started: Project: test_Sturm, Configuration: Release x64 ------
5>------ Build started: Project: test_absolute_pose, Configuration: Release x64 ------
6>------ Build started: Project: test_absolute_pose_sac, Configuration: Release x64 ------
7>------ Build started: Project: test_eigensolver, Configuration: Release x64 ------
8>------ Build started: Project: test_eigensolver_sac, Configuration: Release x64 ------
9>------ Build started: Project: test_multi_noncentral_absolute_pose_sac, Configuration: Release x64 ------
10>------ Build started: Project: test_multi_noncentral_relative_pose_sac, Configuration: Release x64 ------
11>------ Build started: Project: test_noncentral_absolute_pose, Configuration: Release x64 ------
12>------ Build started: Project: test_noncentral_absolute_pose_sac, Configuration: Release x64 ------
13>------ Build started: Project: test_noncentral_relative_pose, Configuration: Release x64 ------
14>------ Build started: Project: test_noncentral_relative_pose_sac, Configuration: Release x64 ------
15>------ Build started: Project: test_point_cloud, Configuration: Release x64 ------
5>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
4>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
7>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
10>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
11>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
6>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
8>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
9>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
14>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
13>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
15>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
12>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
5>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
4>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
10>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
7>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
14>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
11>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
8>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
15>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
6>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
9>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
13>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
5>  test_absolute_pose.cpp
4>  test_Sturm.cpp
10>  test_multi_noncentral_relative_pose_sac.cpp
7>  test_eigensolver.cpp
14>  test_noncentral_relative_pose_sac.cpp
12>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
11>  test_noncentral_absolute_pose.cpp
6>  test_absolute_pose_sac.cpp
8>  test_eigensolver_sac.cpp
9>  test_multi_noncentral_absolute_pose_sac.cpp
15>  test_point_cloud.cpp
13>  test_noncentral_relative_pose.cpp
12>  test_noncentral_absolute_pose_sac.cpp
4>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
16>------ Build started: Project: test_point_cloud_sac, Configuration: Release x64 ------
16>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
5>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
17>------ Build started: Project: test_relative_pose, Configuration: Release x64 ------
11>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
18>------ Build started: Project: test_relative_pose_rotationOnly, Configuration: Release x64 ------
17>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
14>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
19>------ Build started: Project: test_relative_pose_rotationOnly_sac, Configuration: Release x64 ------
15>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
8>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
10>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
7>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
12>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
9>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
20>------ Build started: Project: test_relative_pose_sac, Configuration: Release x64 ------
21>------ Build started: Project: test_triangulation, Configuration: Release x64 ------
16>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
18>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
19>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
17>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
16>  test_point_cloud_sac.cpp
18>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
19>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
17>  test_relative_pose.cpp
18>  test_relative_pose_rotationOnly.cpp
20>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
21>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
19>  test_relative_pose_rotationOnly_sac.cpp
20>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
21>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
20>  test_relative_pose_sac.cpp
21>  test_triangulation.cpp
6>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
18>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
19>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
16>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
13>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
21>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
17>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
20>LINK : fatal error LNK1181: cannot open input file 'lib\Release\opengv.lib'
22>------ Build started: Project: ALL_BUILD, Configuration: Release x64 ------
22>  Building Custom Rule V:/GitHubRepostitory/MultiCol-SLAM/ThirdParty/OpenGV/CMakeLists.txt
22>  CMake does not need to re-run because V:\GitHubRepostitory\MultiCol-SLAM\ThirdParty\OpenGV\build\CMakeFiles\generate.stamp is up-to-date.
========== Build: 2 succeeded, 20 failed, 0 up-to-date, 0 skipped ==========
antithing commented 7 years ago

Hi, I had a similar problem with openGv. Rebuilding from the openGv github and using that one instead worked for me.

FreedomRings commented 7 years ago

AntiThing - That was sound advice - using your advice I found some other things like that, and with tweeks to the library inclusions and order things improved. I have finally gotten down to a set of 20 errors (LNK2001: unresolved external symbols). I've spent days trying to resolve them, but I finally did a /FORCE and I am holding my breath. This is my third month trying to get this to compile. I feel like there are VS settings and such that are important that are not documented. I can't wait to actually get to play with this.

FreedomRings commented 7 years ago

Well, no joy. I was able to force the link, but it just dies before the first instruction is executed. Did you get it to work in Windows? I have no choice but to use Windows since the other piece uses Windows, but I just cannot seem to get this to work with Visual Studio 2015.

@urbste says above that it needs to be 64-bit but the lafida example plainly has WIN32 in the Preprocessor Definitions and I had to get around that to get it to compile. The instructions for *nix are far more detailed than the 2 or 3 sentences for Windows and I am getting a little frustrated at my own inability to come up with the right combination of settings, library load/compile prerequisites.

@antithing - if you (or anyone else) had been able to get this to compile in Visual Studio 2017 I would really appreciate sharing your Project Properties (from that I might be able to back-propagate the requirements to bring this to at least a testable state).

Thanks!

urbste commented 7 years ago

Hi,

really sorry, that it takes that long to compile the code. I updated OpenGV and especially the Eigen versions. It seems like there were older files that inferred with newer ones.

I just did a clean installation using Visual Studio 2015 Community on a Win10 x64 system and OpenCV3.2. For Pangolin I switched off MSVC_USE_STATIC_CRT in cmake. The compilation worked without any issues using the updated version of OpenGV.

So please clone the updated ThirdParty folder and try it again, it should work now (at least it did for me ;-) )

FreedomRings commented 7 years ago

Oh wow!!!! YOU MADE MY DAY!!! What a wonderful Christmas gift!! Thank you!!

I looked in the commit and WOW sir! You made a lot of great edits and have been VERY busy!

A quick question, I see that they WIN32 stuff is in there still (and even expounded upon) - do you compile for WIN32 or 64-bit?

Again - thank you, thank you, thank you.

FreedomRings commented 7 years ago

Still had a few problems with OpenCv. It complained that it did not have LAPACK, BLAS, VTK and MATLAB. I found an option BUILD_WITH_STATIC_CRT which I deselected (thinking this is similar to MSVC_USE_STATIC_CRT you were talking about in Pangolin). When it died, I set my EIGEN_INCLUDE_PATH to your MultiCol-SLAM/ThirdParty/Eigen directory rather than the Eigen3 directory I built from git. I would like to suggest that the order of events should be Pangolin, then to clone your repository, and then build OpenCv using your Eigen, and then build OpenCV INSTALL. I also needed to choose to build INSTALL on OpenGV to make it work.

In any case, it compiles now! Thanks for you help I can't wait to start playing with this!