Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
-
Gautam Ramachandra
- Posts: 65
- Joined: Thu Sep 03, 2015 11:04 pm
Post
by Gautam Ramachandra » Wed Oct 19, 2016 10:48 pm
I am trying to compile a .cpp file in ubuntu but I am having some problems with the compilation as to linking the libraries of opensim, following is the run command
Code: Select all
g++ -lm tugofwar.cpp -o tugofwarmodel -std=c++11 -I ../../../open/include/SimTK/ -I ../../include -L/open/lib -L/open/bin -losimSimulation -losimActuators -losimCommon -losimAnalyses -losimTools -lSimTKcommon -lSimTKmath -lSimTKsimbody
The error is tugofwar.cpp:2:29: fatal error: OpenSim/OpenSim.h: No such file or directory
#include <OpenSim/OpenSim.h>
My opensim installation is in home directory in Ubuntu
Please help me with this.
-
Gautam Ramachandra
- Posts: 65
- Joined: Thu Sep 03, 2015 11:04 pm
Post
by Gautam Ramachandra » Fri Oct 21, 2016 2:23 am
Hi, I have provided the include library but somehow it is saying no such file or directory, in my run command here I have included that
Code: Select all
g++ -lm tugofwar.cpp -o tugofwarmodel -std=c++11 -I ../../../open/include/SimTK/ -I ../../include -L/open/lib -L/open/bin -losimSimulation -losimActuators -losimCommon -losimAnalyses -losimTools -lSimTKcommon -lSimTKmath -lSimTKsimbody
I am not getting the point because include library folder is not there in the installation folder of opensim when i instlall in linux
-
Dimitar Stanev
- Posts: 1096
- Joined: Fri Jan 31, 2014 5:14 am
Post
by Dimitar Stanev » Fri Oct 21, 2016 3:54 am
I think you have to define the absolute path and also you don't add a space after -I. Why don't you try using the CMake module to take care of all the dependencies?
-
Gautam Ramachandra
- Posts: 65
- Joined: Thu Sep 03, 2015 11:04 pm
Post
by Gautam Ramachandra » Fri Oct 21, 2016 10:54 pm
Absolute path meaning ? And I did use CMAKE for the installation but here what I am trying to do is I have a .cpp file with some control codes and I am compiling my tug of war model again so when it gets compiled it will be converted to .exe file with the control algorithm in it. So how can I do this in cmake ?
-
Dimitar Stanev
- Posts: 1096
- Joined: Fri Jan 31, 2014 5:14 am
Post
by Dimitar Stanev » Fri Oct 21, 2016 11:11 pm
Absolute path is the whole path while relative is with respect to your current dir, but I think gcc does not know your current dir. If you look at the OpenSim installation folder, there should be an example folder with projects using CMake, use these files as a starting point.
-
Gautam Ramachandra
- Posts: 65
- Joined: Thu Sep 03, 2015 11:04 pm
Post
by Gautam Ramachandra » Mon Oct 24, 2016 1:21 am
Yeah I got the include directory correct, I am sorry I thought include folder in the opensim, I did not know that you were referring to "-I" command in C++, yeah its working fine but now i am getting this error
Code: Select all
gautam@ubuntu:~/b/tow$ g++ -lm tugofwar.cpp -o tugofwarmodel -std=c++11 -I/home/gautam/opensim/sdk/include/SimTK/simbody -I/home/gautam/opensim/sdk/include -L/home/gautam/opensim/lib -L/home/gautam/opensim/bin -losimSimulation -losimActuators -losimCommon -losimAnalyses -losimTools -lSimTKcommon -lSimTKmath -lSimTKsimbody
tugofwar.cpp: In function ‘int main(int, char**)’:
tugofwar.cpp:560:30: error: call of overloaded ‘isnan(double&)’ is ambiguous
if (isnan(err))
^
tugofwar.cpp:560:30: note: candidates are:
In file included from /usr/include/features.h:374:0,
from /usr/include/x86_64-linux-gnu/c++/4.8/bits/os_defines.h:39,
from /usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:426,
from /usr/include/c++/4.8/iostream:38,
from /home/gautam/opensim/sdk/include/OpenSim/Common/XMLDocument.h:32,
from /home/gautam/opensim/sdk/include/OpenSim/Common/Object.h:39,
from /home/gautam/opensim/sdk/include/OpenSim/Common/osimCommon.h:26,
from /home/gautam/opensim/sdk/include/OpenSim/OpenSim.h:26,
from tugofwar.cpp:2:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:234:1: note: int isnan(double)
__MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
^
In file included from /home/gautam/opensim/sdk/include/SimTK/simbody/SimTKcommon/internal/common.h:249:0,
from /home/gautam/opensim/sdk/include/SimTK/simbody/SimTKcommon/basics.h:38,
from /home/gautam/opensim/sdk/include/SimTK/simbody/SimTKcommon.h:32,
from /home/gautam/opensim/sdk/include/OpenSim/Common/XMLDocument.h:34,
from /home/gautam/opensim/sdk/include/OpenSim/Common/Object.h:39,
from /home/gautam/opensim/sdk/include/OpenSim/Common/osimCommon.h:26,
from /home/gautam/opensim/sdk/include/OpenSim/OpenSim.h:26,
from tugofwar.cpp:2:
/usr/include/c++/4.8/cmath:626:3: note: constexpr bool std::isnan(long double)
isnan(long double __x)
^
/usr/include/c++/4.8/cmath:622:3: note: constexpr bool std::isnan(double)
isnan(double __x)
^
/usr/include/c++/4.8/cmath:618:3: note: constexpr bool std::isnan(float)
isnan(float __x)
Please help me with this error
-
Gautam Ramachandra
- Posts: 65
- Joined: Thu Sep 03, 2015 11:04 pm
Post
by Gautam Ramachandra » Mon Oct 24, 2016 10:50 pm
It is showing the same error as follows with g++ version of 5.0 and regarding the cmake its kind of complicated to do it in linux. But please help me to debug this error .
Code: Select all
gautam@ubuntu:~/b/tow$ g++ -lm tugofwar.cpp -o tugofwarmodel -std=c++11 -I/home/gautam/opensim/sdk/include/SimTK/simbody -I/home/gautam/opensim/sdk/include -L/home/gautam/opensim/lib -L/home/gautam/opensim/bin -losimSimulation -losimActuators -losimCommon -losimAnalyses -losimTools -lSimTKcommon -lSimTKmath -lSimTKsimbody
tugofwar.cpp: In function ‘int main(int, char**)’:
tugofwar.cpp:560:30: error: call of overloaded ‘isnan(double&)’ is ambiguous
if (isnan(err))
^
In file included from /usr/include/features.h:374:0,
from /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:39,
from /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:482,
from /usr/include/c++/5/iostream:38,
from /home/gautam/opensim/sdk/include/OpenSim/Common/XMLDocument.h:32,
from /home/gautam/opensim/sdk/include/OpenSim/Common/Object.h:39,
from /home/gautam/opensim/sdk/include/OpenSim/Common/osimCommon.h:26,
from /home/gautam/opensim/sdk/include/OpenSim/OpenSim.h:26,
from tugofwar.cpp:2:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:234:1: note: candidate: int isnan(double)
__MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
^
In file included from /home/gautam/opensim/sdk/include/SimTK/simbody/SimTKcommon/internal/common.h:249:0,
from /home/gautam/opensim/sdk/include/SimTK/simbody/SimTKcommon/basics.h:38,
from /home/gautam/opensim/sdk/include/SimTK/simbody/SimTKcommon.h:32,
from /home/gautam/opensim/sdk/include/OpenSim/Common/XMLDocument.h:34,
from /home/gautam/opensim/sdk/include/OpenSim/Common/Object.h:39,
from /home/gautam/opensim/sdk/include/OpenSim/Common/osimCommon.h:26,
from /home/gautam/opensim/sdk/include/OpenSim/OpenSim.h:26,
from tugofwar.cpp:2:
/usr/include/c++/5/cmath:634:3: note: candidate: constexpr bool std::isnan(long double)
isnan(long double __x)
^
/usr/include/c++/5/cmath:630:3: note: candidate: constexpr bool std::isnan(double)
isnan(double __x)
^
/usr/include/c++/5/cmath:626:3: note: candidate: constexpr bool std::isnan(float)
isnan(float __x)
^
-
Dimitar Stanev
- Posts: 1096
- Joined: Fri Jan 31, 2014 5:14 am
Post
by Dimitar Stanev » Mon Oct 24, 2016 11:12 pm
You could avoid these kind of problems through CMake, and the tool will inform you if you have misconfigured the installation. Please post your tugofwar.cpp, maybe the problem is there.
Last edited by
Dimitar Stanev on Wed Jun 28, 2017 2:44 am, edited 1 time in total.