StateTest fails after compiling simtkcommon
Posted: Thu Sep 25, 2008 12:50 am
Hello Guys,
After a while, I tried again to compile SimTK without using Cygwin with straight MinGW. Simtkcommon compiles fine only the test for StateTest fails but only with the shared library. All other tests pass.
I get the following message:
$ StateTest
==> SimTKcommon library version: 0.6.3
SimTK_about_SimTKcommon():
about(version)='0.6.3'
about(library)='SimTKcommon'
about(type)='shared'
about(debug)='debug'
about(authors)='Michael.Sherman'
about(copyright)='Copyright (c) 2005-7 Stanford University, Michael.Sherman'
about(svn_revision)=''
*** STATE TEST EXCEPTION
SimTK Exception thrown at Enumeration.h:246:
Internal SimTK bug detected: Indices must be consecutive ints starting from 0. (Assertion 'index == updAllValues().size()' failed). Please report this to the appropriate authorities at SimTK.org.
***
Afterwards I tried to compile Cpodes anyway, which compiles fine with passing all test. However compiling simmath does not compile with the following error:
simmath/Ipopt/IpLapackSolverInterface.cpp: In member function `virtual Ipopt::ESymSolverStatus Ipopt::LapackSolverInterface::MultiSol ve(bool, const Ipopt::Index*, const Ipopt::Index*, Ipopt::Index, double*, bool, Ipopt::Index)':
simmath/Ipopt/IpLapackSolverInterface.cpp:105: error: cannot convert `double' to `double*' for argument `9' to `void dgelsd_(const in t&, const int&, const int&, double*, const int&, double*, const int&, double*, double*, int*, double*, const int&, int*, int&)'
simmath/Ipopt/IpLapackSolverInterface.cpp:109: error: cannot convert `double' to `double*' for argument `9' to `void dgelsd_(const in t&, const int&, const int&, double*, const int&, double*, const int&, double*, double*, int*, double*, const int&, int*, int&)'
make[2]: *** [staticTarget/CMakeFiles/SimTKmath_static_d.dir/__/Ipopt/IpLapackSolverInterface.obj] Error 1
make[1]: *** [staticTarget/CMakeFiles/SimTKmath_static_d.dir/all] Error 2
The according parts in the source files are:
IpLapackSolverInterface.cpp: line 105:
dgelsd_( n, n, nrhs, atmp, n, rhs_vals, n, s, rcond, rank, workSize,
-1, iwork, info );
lwork = (int)workSize[0];
work = new double[lwork];
dgelsd_( n, n, nrhs, atmp, n, rhs_vals, n, s, rcond, rank, work,
lwork, iwork, info );
With the according function declaration in SimTKlapack.h: line 1094:
extern void dgelsd_(SimTK_FDIM_(m), SimTK_FDIM_(n), SimTK_FDIM_(nrhs), double *a, SimTK_FDIM_(lda), double *b, SimTK_FDIM_(ldb), double *s, double *rcond, int *rank, double *work, SimTK_FDIM_(lwork), int *iwork, SimTK_INFO_);
The function declaration and the call seem not to match as rcond is defined as:
double rcond = -1.0;
All sources were downloaded via svn from the trunk just a couple of days ago.
Any advice would be appreciated.
Cheers
Robert
After a while, I tried again to compile SimTK without using Cygwin with straight MinGW. Simtkcommon compiles fine only the test for StateTest fails but only with the shared library. All other tests pass.
I get the following message:
$ StateTest
==> SimTKcommon library version: 0.6.3
SimTK_about_SimTKcommon():
about(version)='0.6.3'
about(library)='SimTKcommon'
about(type)='shared'
about(debug)='debug'
about(authors)='Michael.Sherman'
about(copyright)='Copyright (c) 2005-7 Stanford University, Michael.Sherman'
about(svn_revision)=''
*** STATE TEST EXCEPTION
SimTK Exception thrown at Enumeration.h:246:
Internal SimTK bug detected: Indices must be consecutive ints starting from 0. (Assertion 'index == updAllValues().size()' failed). Please report this to the appropriate authorities at SimTK.org.
***
Afterwards I tried to compile Cpodes anyway, which compiles fine with passing all test. However compiling simmath does not compile with the following error:
simmath/Ipopt/IpLapackSolverInterface.cpp: In member function `virtual Ipopt::ESymSolverStatus Ipopt::LapackSolverInterface::MultiSol ve(bool, const Ipopt::Index*, const Ipopt::Index*, Ipopt::Index, double*, bool, Ipopt::Index)':
simmath/Ipopt/IpLapackSolverInterface.cpp:105: error: cannot convert `double' to `double*' for argument `9' to `void dgelsd_(const in t&, const int&, const int&, double*, const int&, double*, const int&, double*, double*, int*, double*, const int&, int*, int&)'
simmath/Ipopt/IpLapackSolverInterface.cpp:109: error: cannot convert `double' to `double*' for argument `9' to `void dgelsd_(const in t&, const int&, const int&, double*, const int&, double*, const int&, double*, double*, int*, double*, const int&, int*, int&)'
make[2]: *** [staticTarget/CMakeFiles/SimTKmath_static_d.dir/__/Ipopt/IpLapackSolverInterface.obj] Error 1
make[1]: *** [staticTarget/CMakeFiles/SimTKmath_static_d.dir/all] Error 2
The according parts in the source files are:
IpLapackSolverInterface.cpp: line 105:
dgelsd_( n, n, nrhs, atmp, n, rhs_vals, n, s, rcond, rank, workSize,
-1, iwork, info );
lwork = (int)workSize[0];
work = new double[lwork];
dgelsd_( n, n, nrhs, atmp, n, rhs_vals, n, s, rcond, rank, work,
lwork, iwork, info );
With the according function declaration in SimTKlapack.h: line 1094:
extern void dgelsd_(SimTK_FDIM_(m), SimTK_FDIM_(n), SimTK_FDIM_(nrhs), double *a, SimTK_FDIM_(lda), double *b, SimTK_FDIM_(ldb), double *s, double *rcond, int *rank, double *work, SimTK_FDIM_(lwork), int *iwork, SimTK_INFO_);
The function declaration and the call seem not to match as rcond is defined as:
double rcond = -1.0;
All sources were downloaded via svn from the trunk just a couple of days ago.
Any advice would be appreciated.
Cheers
Robert