编译项目时出错https://svn.openslam.org/data/svn/hog-man 我在Linux GNU C++下使用安装指令< /P>编译猪人 @verbatim $ svn co http://www.openslam.org/data/svn/hog-man $ cd hog-man/trunk/ $ bash # if not already running $ source setlibpath $ ./configure $ make @endverbatim
Csparse已安装 运行最后一步时出错:编译项目时出错https://svn.openslam.org/data/svn/hog-man 我在Linux GNU C++下使用安装指令< /P>编译猪人 @verbatim $ svn co http://www.openslam.org/data/svn/hog-man $ cd hog-man/trunk/ $ bash # if not already running $ source setlibpath $ ./configure $ make @endverbatim,c++,linux,compilation,C++,Linux,Compilation,Csparse已安装 运行最后一步时出错: from hogman2d.cpp:18: graph_optimizer_chol.hpp: In member function ‘virtual typename PG::Edge* AISNavigation::CholOptimizer<PG>::addEdge(typename PG::Vertex*, typename PG::Vertex*, const typename P
from hogman2d.cpp:18:
graph_optimizer_chol.hpp: In member function ‘virtual typename
PG::Edge* AISNavigation::CholOptimizer<PG>::addEdge(typename
PG::Vertex*, typename PG::Vertex*, const typename
PG::TransformationType&, const typename PG::InformationType&)’:
graph_optimizer_chol.hpp:284:25: error: expected primary- expression before ‘&&’ token
if (_guessOnEdges && to->edges().size()==1 && ! to->fixed()){
^
Failed command was:
g++ -fPIC -DLINUX -I/home/sophie/hog-man/trunk
-D_MY_CAST_=reinterpret_cast -I/home/sophie/hog-man/trunk/aislib -fPIC
-O3 -Wall -frtti -mmmx -msse3 -c hogman2d.cpp -o hogman2d.o
in directory /home/sophie/hog-man/trunk/aislib/graph_optimizer_hogman
../../build_tools/Makefile.generic-shared-object:55: recipe for target 'hogman2d.o' failed
make[2]: *** [hogman2d.o] Error 1
Compilation in graph_optimizer_hogman failed.
../build_tools/Makefile.subdirs:10: recipe for target 'all' failed
make[1]: *** [all] Error 1
Compilation in aislib failed.
build_tools/Makefile.subdirs:10: recipe for target 'all' failed
make: *** [all] Error 1
在GraphOptimizer.hpp中:
template <typename PG>
GraphOptimizer<PG>::GraphOptimizer() :
PG(),
_verbose(false), _visualizeToStdout(false), _guessOnEdges(false)
{
}
所以它被定义了,但是它在哪里被初始化,当这个方法被执行时它没有被初始化的问题吗
if (_guessOnEdges && to->edges().size()==1 && ! to->fixed()){
to->transformation=from->transformation*mean;
}
return e;
}
此处的
this
必须告诉编译器\u gustisonedges
是一个依赖符号,在实例化模板之前无法解析。听起来像是缺少一个文件。用文件修复了这个问题。这是链接错误,不是编译错误;C++是Frimyy,你必须告诉编译器所有的两次:哪里是包含文件(所以它可以编译),然后是哪个库来链接(这样它可以链接)。在gcc/clang中,使用-L
参数列出库所在的路径,然后使用-L
(小L)参数来指示要链接的库。make命令是否也使用此选项来包括本地文件夹?在我的情况下,缺少的库是从我运行的方向来的子文件夹。/configure和make。在执行时指定它们。/configure使用-l选项。运行make时仍然找不到它们。
template <typename PG>
GraphOptimizer<PG>::GraphOptimizer() :
PG(),
_verbose(false), _visualizeToStdout(false), _guessOnEdges(false)
{
}
56: bool initFromObservations = _guessOnEdges;
if (_guessOnEdges && to->edges().size()==1 && ! to->fixed()){
to->transformation=from->transformation*mean;
}
return e;
}
using typename GraphOptimizer<PG>::_guessOnEdges;
if (this->_guessOnEdges && to->edges().size()==1 && ! to->fixed()){
to->transformation=from->transformation*mean;
}