Hello,
My set up is Ubuntu 14.04, ROS Indigo (Debian install). I have been using the rtabmap Indigo binaries that work well. However, I need to compile rtabmap from source to compare results with someone else who has compiled from source. So first I uninstalled the rtabmap binaries, then I tried the following. I'm trying to compile the latest source from the master branch and I am running into a compile error related to gtsam. I installed the gtsam-3.2.1 package from source and then ran the following commands: $ cd ~ $ git clone https://github.com/introlab/rtabmap.git rtabmap $ cd rtabmap/build $ cmake .. -DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel $ make -j4 The compilation aborts with the following output and error messages: [ 30%] Building CXX object corelib/src/CMakeFiles/rtabmap_core.dir/RegistrationIcp.cpp.o In file included from /usr/local/include/gtsam/geometry/Pose2.h:24:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:39: /usr/local/include/gtsam/base/Matrix.h: In function ‘void gtsam::inplace_QR(MATRIX&)’: /usr/local/include/gtsam/base/Matrix.h:316:71: error: expected ‘;’ before ‘::’ token Eigen::internal::householder_qr_inplace_blocked<MATRIX, HCoeffsType>::run(A, hCoeffs, 48, temp.data()); ^ In file included from /usr/local/include/gtsam/geometry/Pose2.h:26:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:39: /usr/local/include/gtsam/geometry/Point2.h: In static member function ‘static gtsam::Vector gtsam::Point2::Logmap(const gtsam::Point2&)’: /usr/local/include/gtsam/geometry/Point2.h:175:86: error: could not convert ‘Eigen::DenseBase<Derived>::operator<<(const Scalar&) [with Derived = Eigen::Matrix<double, -1, 1>; Eigen::DenseBase<Derived>::Scalar = double]((* &(& dp)->gtsam::Point2::x())).Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, 1> >((* &(& dp)->gtsam::Point2::y()))’ from ‘Eigen::CommaInitializer<Eigen::Matrix<double, -1, 1> >’ to ‘gtsam::Vector {aka Eigen::Matrix<double, -1, 1>}’ static inline Vector Logmap(const Point2& dp) { return (Vector(2) << dp.x(), dp.y()); } ^ In file included from /usr/local/include/gtsam/geometry/Pose2.h:27:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:39: /usr/local/include/gtsam/geometry/Rot2.h: In static member function ‘static gtsam::Vector gtsam::Rot2::Logmap(const gtsam::Rot2&)’: /usr/local/include/gtsam/geometry/Rot2.h:173:25: error: could not convert ‘Eigen::DenseBase<Derived>::operator<<(const Scalar&) [with Derived = Eigen::Matrix<double, -1, 1>; Eigen::DenseBase<Derived>::Scalar = double]((* &(& r)->gtsam::Rot2::theta()))’ from ‘Eigen::CommaInitializer<Eigen::Matrix<double, -1, 1> >’ to ‘gtsam::Vector {aka Eigen::Matrix<double, -1, 1>}’ return (Vector(1) << r.theta()); ^ In file included from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:39:0: /usr/local/include/gtsam/geometry/Pose2.h: In static member function ‘static gtsam::Matrix gtsam::Pose2::wedge(double, double, double)’: /usr/local/include/gtsam/geometry/Pose2.h:178:20: error: could not convert ‘(&(&(&(&(&(&(& Eigen::DenseBase<Derived>::operator<<(const Scalar&) [with Derived = Eigen::Matrix<double, -1, -1>; Eigen::DenseBase<Derived>::Scalar = double]((* &0.0)).Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &(- w))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& vx))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& w))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0)))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& vy))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0)))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0)))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0))’ from ‘Eigen::CommaInitializer<Eigen::Matrix<double, -1, -1> >’ to ‘gtsam::Matrix {aka Eigen::Matrix<double, -1, -1>}’ 0., 0., 0.); ^ In file included from /usr/local/include/gtsam/geometry/Pose3.h:30:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:40: /usr/local/include/gtsam/geometry/Rot3.h: In static member function ‘static gtsam::Rot3 gtsam::Rot3::rodriguez(double, double, double)’: /usr/local/include/gtsam/geometry/Rot3.h:197:51: error: no matching function for call to ‘gtsam::Rot3::rodriguez(Eigen::CommaInitializer<Eigen::Matrix<double, -1, 1> >&)’ { return rodriguez((Vector(3) << wx, wy, wz));} ^ /usr/local/include/gtsam/geometry/Rot3.h:197:51: note: candidates are: /usr/local/include/gtsam/geometry/Rot3.h:164:17: note: static gtsam::Rot3 gtsam::Rot3::rodriguez(const Vector&, double) static Rot3 rodriguez(const Vector& w, double theta); ^ /usr/local/include/gtsam/geometry/Rot3.h:164:17: note: candidate expects 2 arguments, 1 provided /usr/local/include/gtsam/geometry/Rot3.h:172:17: note: static gtsam::Rot3 gtsam::Rot3::rodriguez(const gtsam::Point3&, double) static Rot3 rodriguez(const Point3& w, double theta); ^ /usr/local/include/gtsam/geometry/Rot3.h:172:17: note: candidate expects 2 arguments, 1 provided /usr/local/include/gtsam/geometry/Rot3.h:180:17: note: static gtsam::Rot3 gtsam::Rot3::rodriguez(const gtsam::Unit3&, double) static Rot3 rodriguez(const Unit3& w, double theta); ^ /usr/local/include/gtsam/geometry/Rot3.h:180:17: note: candidate expects 2 arguments, 1 provided /usr/local/include/gtsam/geometry/Rot3.h:187:17: note: static gtsam::Rot3 gtsam::Rot3::rodriguez(const Vector&) static Rot3 rodriguez(const Vector& v); ^ /usr/local/include/gtsam/geometry/Rot3.h:187:17: note: no known conversion for argument 1 from ‘Eigen::CommaInitializer<Eigen::Matrix<double, -1, 1> >’ to ‘const Vector& {aka const Eigen::Matrix<double, -1, 1>&}’ /usr/local/include/gtsam/geometry/Rot3.h:196:17: note: static gtsam::Rot3 gtsam::Rot3::rodriguez(double, double, double) static Rot3 rodriguez(double wx, double wy, double wz) ^ /usr/local/include/gtsam/geometry/Rot3.h:196:17: note: candidate expects 3 arguments, 1 provided In file included from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:40:0: /usr/local/include/gtsam/geometry/Pose3.h: In static member function ‘static gtsam::Matrix gtsam::Pose3::wedge(double, double, double, double, double, double)’: /usr/local/include/gtsam/geometry/Pose3.h:226:28: error: could not convert ‘(&(&(&(&(&(&(&(&(&(&(&(&(&(& Eigen::DenseBase<Derived>::operator<<(const Scalar&) [with Derived = Eigen::Matrix<double, -1, -1>; Eigen::DenseBase<Derived>::Scalar = double]((* &0.0)).Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &(- wz))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& wy))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& vx))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& wz))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0)))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &(- wx))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& vy))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &(- wy))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& wx))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0)))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((*(const Scalar*)(& vz))))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0)))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0)))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0)))->Eigen::CommaInitializer<MatrixType>::operator,<Eigen::Matrix<double, -1, -1> >((* &0.0))’ from ‘Eigen::CommaInitializer<Eigen::Matrix<double, -1, -1> >’ to ‘gtsam::Matrix {aka Eigen::Matrix<double, -1, -1>}’ 0., 0., 0., 0.); ^ [ 30%] Building CXX object corelib/src/CMakeFiles/rtabmap_core.dir/RegistrationVis.cpp.o In file included from /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/betweenFactorSwitchable.h:17:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:55: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h: In member function ‘gtsam::Vector vertigo::SwitchVariableLinear::localCoordinates(const vertigo::SwitchVariableLinear&) const’: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:62:90: error: ‘Vector1’ is not a member of ‘gtsam’ inline gtsam::Vector localCoordinates(const SwitchVariableLinear& t2) const { return gtsam::Vector1(t2.value() - value()); } ^ In file included from /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/betweenFactorSwitchable.h:17:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:55: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h: In static member function ‘static gtsam::Vector vertigo::SwitchVariableLinear::Logmap(const vertigo::SwitchVariableLinear&)’: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:96:80: error: ‘Vector1’ is not a member of ‘gtsam’ static inline gtsam::Vector Logmap(const SwitchVariableLinear& p) { return gtsam::Vector1(p.value()); } ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h: At global scope: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:115:11: error: ‘OptionalJacobian’ does not name a type typedef OptionalJacobian<3, 3> ChartJacobian; ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:118:3: error: ‘ChartJacobian’ has not been declared ChartJacobian Horigin = boost::none, ChartJacobian Hother = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:118:40: error: ‘ChartJacobian’ has not been declared ChartJacobian Horigin = boost::none, ChartJacobian Hother = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:122:9: error: ‘ChartJacobian’ has not been declared ChartJacobian H1 = boost::none, ChartJacobian H2 = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:122:41: error: ‘ChartJacobian’ has not been declared ChartJacobian H1 = boost::none, ChartJacobian H2 = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:118:34: error: could not convert ‘boost::none’ from ‘const none_t {aka int boost::detail::none_helper::* const}’ to ‘int’ ChartJacobian Horigin = boost::none, ChartJacobian Hother = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:118:70: error: could not convert ‘boost::none’ from ‘const none_t {aka int boost::detail::none_helper::* const}’ to ‘int’ ChartJacobian Horigin = boost::none, ChartJacobian Hother = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:122:35: error: could not convert ‘boost::none’ from ‘const none_t {aka int boost::detail::none_helper::* const}’ to ‘int’ ChartJacobian H1 = boost::none, ChartJacobian H2 = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:122:67: error: could not convert ‘boost::none’ from ‘const none_t {aka int boost::detail::none_helper::* const}’ to ‘int’ ChartJacobian H1 = boost::none, ChartJacobian H2 = boost::none) { ^ In file included from /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/betweenFactorSwitchable.h:18:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:55: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h: In member function ‘gtsam::Vector vertigo::SwitchVariableSigmoid::localCoordinates(const vertigo::SwitchVariableSigmoid&) const’: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:62:91: error: ‘Vector1’ is not a member of ‘gtsam’ inline gtsam::Vector localCoordinates(const SwitchVariableSigmoid& t2) const { return gtsam::Vector1(t2.value() - value()); } ^ In file included from /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/betweenFactorSwitchable.h:18:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:55: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h: In static member function ‘static gtsam::Vector vertigo::SwitchVariableSigmoid::Logmap(const vertigo::SwitchVariableSigmoid&)’: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:96:81: error: ‘Vector1’ is not a member of ‘gtsam’ static inline gtsam::Vector Logmap(const SwitchVariableSigmoid& p) { return gtsam::Vector1(p.value()); } ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h: At global scope: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:116:11: error: ‘OptionalJacobian’ does not name a type typedef OptionalJacobian<3, 3> ChartJacobian; ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:119:3: error: ‘ChartJacobian’ has not been declared ChartJacobian Horigin = boost::none, ChartJacobian Hother = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:119:40: error: ‘ChartJacobian’ has not been declared ChartJacobian Horigin = boost::none, ChartJacobian Hother = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:123:9: error: ‘ChartJacobian’ has not been declared ChartJacobian H1 = boost::none, ChartJacobian H2 = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:123:41: error: ‘ChartJacobian’ has not been declared ChartJacobian H1 = boost::none, ChartJacobian H2 = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:119:34: error: could not convert ‘boost::none’ from ‘const none_t {aka int boost::detail::none_helper::* const}’ to ‘int’ ChartJacobian Horigin = boost::none, ChartJacobian Hother = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:119:70: error: could not convert ‘boost::none’ from ‘const none_t {aka int boost::detail::none_helper::* const}’ to ‘int’ ChartJacobian Horigin = boost::none, ChartJacobian Hother = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:123:35: error: could not convert ‘boost::none’ from ‘const none_t {aka int boost::detail::none_helper::* const}’ to ‘int’ ChartJacobian H1 = boost::none, ChartJacobian H2 = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:123:67: error: could not convert ‘boost::none’ from ‘const none_t {aka int boost::detail::none_helper::* const}’ to ‘int’ ChartJacobian H1 = boost::none, ChartJacobian H2 = boost::none) { ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp: In member function ‘virtual std::map<int, rtabmap::Transform> rtabmap::OptimizerGTSAM::optimize(int, const std::map<int, rtabmap::Transform>&, const std::multimap<int, rtabmap::Link>&, std::list<std::map<int, rtabmap::Transform> >*, double*, int*)’: /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:152:100: error: ‘Vector1’ is not a member of ‘gtsam’ gtsam::noiseModel::Diagonal::shared_ptr switchPriorModel = gtsam::noiseModel::Diagonal::Sigmas(gtsam::Vector1(1.0)); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:246:37: error: ‘const class gtsam::Value’ has no member named ‘cast’ gtsam::Pose2 p = iter->value.cast<gtsam::Pose2>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:246:54: error: expected primary-expression before ‘>’ token gtsam::Pose2 p = iter->value.cast<gtsam::Pose2>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:246:56: error: expected primary-expression before ‘)’ token gtsam::Pose2 p = iter->value.cast<gtsam::Pose2>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:251:37: error: ‘const class gtsam::Value’ has no member named ‘cast’ gtsam::Pose3 p = iter->value.cast<gtsam::Pose3>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:251:54: error: expected primary-expression before ‘>’ token gtsam::Pose3 p = iter->value.cast<gtsam::Pose3>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:251:56: error: expected primary-expression before ‘)’ token gtsam::Pose3 p = iter->value.cast<gtsam::Pose3>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:308:35: error: ‘const class gtsam::Value’ has no member named ‘cast’ gtsam::Pose2 p = iter->value.cast<gtsam::Pose2>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:308:52: error: expected primary-expression before ‘>’ token gtsam::Pose2 p = iter->value.cast<gtsam::Pose2>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:308:54: error: expected primary-expression before ‘)’ token gtsam::Pose2 p = iter->value.cast<gtsam::Pose2>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:313:35: error: ‘const class gtsam::Value’ has no member named ‘cast’ gtsam::Pose3 p = iter->value.cast<gtsam::Pose3>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:313:52: error: expected primary-expression before ‘>’ token gtsam::Pose3 p = iter->value.cast<gtsam::Pose3>(); ^ /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:313:54: error: expected primary-expression before ‘)’ token gtsam::Pose3 p = iter->value.cast<gtsam::Pose3>(); ^ In file included from /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/betweenFactorSwitchable.h:17:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:55: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h: In member function ‘gtsam::Vector vertigo::SwitchVariableLinear::localCoordinates(const vertigo::SwitchVariableLinear&) const’: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableLinear.h:62:128: warning: control reaches end of non-void function [-Wreturn-type] inline gtsam::Vector localCoordinates(const SwitchVariableLinear& t2) const { return gtsam::Vector1(t2.value() - value()); } ^ In file included from /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/betweenFactorSwitchable.h:18:0, from /home/patrick/src/rtabmap/corelib/src/OptimizerGTSAM.cpp:55: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h: In member function ‘gtsam::Vector vertigo::SwitchVariableSigmoid::localCoordinates(const vertigo::SwitchVariableSigmoid&) const’: /home/patrick/src/rtabmap/corelib/src/vertigo/gtsam/switchVariableSigmoid.h:62:129: warning: control reaches end of non-void function [-Wreturn-type] inline gtsam::Vector localCoordinates(const SwitchVariableSigmoid& t2) const { return gtsam::Vector1(t2.value() - value()); } ^ make[2]: *** [corelib/src/CMakeFiles/rtabmap_core.dir/OptimizerGTSAM.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [corelib/src/CMakeFiles/rtabmap_core.dir/all] Error 2 make: *** [all] Error 2 |
Administrator
|
Hi,
latest version of GTSAM is required, it will not build with 3.2.1: $ git clone https://bitbucket.org/gtborg/gtsam.gitYou can also read some other issues in "1. Optional dependencies" step of rtabmap_ros's installation instructions. cheers |
Thanks Mathieu. I don't know how I read that instruction completely backwards so I thought I was supposed to install 3.2.1. I installed the latest and everything is good now. Sorry for wasting your time!
--patrick |
Free forum by Nabble | Edit this page |