IntelRealSense / hand_tracking_samples

:wave: :ok_hand: research codebase for depth-based hand pose estimation using dynamics based tracking and CNNs
https://realsense.intel.com/
Apache License 2.0
217 stars 74 forks source link

Trouble compiling cpp to exe #14

Open MSLewis522 opened 3 years ago

MSLewis522 commented 3 years ago

I am using visual code studio to try to run the real-time-hand-tracker.cpp I have downloaded all of the folders from git and then I tried to build the .exe file with g++ compiler from mingw64. however this failed with a very very long list of errors and attempts to fix - after reading through the messages from the failed build, I think it is having trouble locating the right find_json() function frequently throughout the program.

I will paste the entire message below. Any help would be very much appreciated ! Thanks so much !

In file included from .\realtime-hand-tracker.cpp:26: .../third_party/json.h: In instantiation of 'void field_decoder::operator()(const char, T&, TS ...) [with T = linalg::vec<int, 2>; TS = {}]': .../include/misc_image.h:57:60: required from 'void visit_fields(DCamera&, F) [with F = field_decoder]' .../third_party/json.h:146:130: required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = DCamera; typename std::enable_if<std::is_class<_Tp>::value>::type = void]' .../include/dcam.h:354:93: required from here .../third_party/json.h:145:144: error: no matching function for call to 'from_json(linalg::vec<int, 2>&, const json::value&)' struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char name, T & field, TS...) { from_json(field, v[name]); } };


.\../third_party/json.h:138:13: note: candidate: 'void from_json(bool&, const json::value&)'
 inline void from_json(bool & b, const json::value & val) { b = val.is_true(); }
                  ^~~~~~~~~
.\../third_party/json.h:138:13: note:   no known conversion for argument 1 from 'linalg::vec<int, 2>' to 'bool&'
.\../third_party/json.h:139:13: note: candidate: 'void from_json(std::__cxx11::string&, const json::value&)'
 inline void from_json(std::string & s, const json::value & val) { s = val.string(); }
                  ^~~~~~~~~
.\../third_party/json.h:139:13: note:   no known conversion for argument 1 from 'linalg::vec<int, 2>' to 'std::__cxx11::string&' {aka 'std::__cxx11::basic_string<char>&'}
.\../third_party/json.h:140:79: note: candidate: 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&)'
 template<class T> typename std::enable_if<std::is_arithmetic<T>::value>::type from_json(T & n,
const json::value & val) { n = val.number<T>(); }
                                                                               ^~~~~~~~~
.\../third_party/json.h:140:79: note:   template argument deduction/substitution failed:
.\../third_party/json.h: In substitution of 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&) [with T = linalg::vec<int,
2>]':
.\../third_party/json.h:145:144:   required from 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<int, 2>; TS = {}]'
.\../include/misc_image.h:57:60:   required from 'void visit_fields(DCamera&, F) [with F = field_decoder]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = DCamera; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../include/dcam.h:354:93:   required from here
.\../third_party/json.h:140:79: error: no type named 'type' in 'struct std::enable_if<false, void>'
.\../third_party/json.h: In instantiation of 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<int, 2>; TS = {}]':
.\../include/misc_image.h:57:60:   required from 'void visit_fields(DCamera&, F) [with F = field_decoder]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = DCamera; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../include/dcam.h:354:93:   required from here
.\../third_party/json.h:141:31: note: candidate: 'template<class T, int N> void from_json(T (&)[N], const json::value&)'
 template<class T, int N> void from_json(T (& a)[N], const json::value & val) { for(int i=0; i<N; ++i) from_json(a[i], val[i]); }
                               ^~~~~~~~~
.\../third_party/json.h:141:31: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   mismatched types 'T [N]' and 'linalg::vec<int, 2>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:142:34: note: candidate: 'template<class T, long long unsigned int N> void from_json(std::array<_Tp, _Nm>&, const json::value&)'
 template<class T, size_t N> void from_json(std::array<T,N> & a, const json::value & val) { for(size_t i=0; i<N; ++i) from_json(a[i], val[i]); }
                                  ^~~~~~~~~
.\../third_party/json.h:142:34: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<int, 2>' is not derived from 'std::array<_Tp, _Nm>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:143:24: note: candidate: 'template<class T> void from_json(std::vector<T>&, const json::value&)'
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }
                        ^~~~~~~~~
.\../third_party/json.h:143:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<int, 2>' is not derived from 'std::vector<T>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:144:24: note: candidate: 'template<class T> void from_json(std::map<std::__cxx11::basic_string<char>, T>&, const json::value&)'
 template<class T> void from_json(std::map<std::string, T> & m, const json::value & val) { for (auto &e : val.get_object()) { from_json(m[e.first], e.second); } }
                        ^~~~~~~~~
.\../third_party/json.h:144:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<int, 2>' is not derived from 'std::map<std::__cxx11::basic_string<char>, T>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h: In instantiation of 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 2>; TS = {}]':
.\../include/misc_image.h:57:81:   required from 'void visit_fields(DCamera&, F) [with F = field_decoder]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = DCamera; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../include/dcam.h:354:93:   required from here
.\../third_party/json.h:145:144: error: no matching function for call to 'from_json(linalg::vec<float, 2>&, const json::value&)'
.\../third_party/json.h:138:13: note: candidate: 'void from_json(bool&, const json::value&)'
 inline void from_json(bool & b, const json::value & val) { b = val.is_true(); }
             ^~~~~~~~~
.\../third_party/json.h:138:13: note:   no known conversion for argument 1 from 'linalg::vec<float, 2>' to 'bool&'
.\../third_party/json.h:139:13: note: candidate: 'void from_json(std::__cxx11::string&, const json::value&)'
 inline void from_json(std::string & s, const json::value & val) { s = val.string(); }
             ^~~~~~~~~
.\../third_party/json.h:139:13: note:   no known conversion for argument 1 from 'linalg::vec<float, 2>' to 'std::__cxx11::string&' {aka 'std::__cxx11::basic_string<char>&'}
.\../third_party/json.h:140:79: note: candidate: 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&)'
 template<class T> typename std::enable_if<std::is_arithmetic<T>::value>::type from_json(T & n,
const json::value & val) { n = val.number<T>(); }
                                                                               ^~~~~~~~~
.\../third_party/json.h:140:79: note:   template argument deduction/substitution failed:
.\../third_party/json.h: In substitution of 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&) [with T = linalg::vec<float, 2>]':
.\../third_party/json.h:145:144:   required from 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 2>; TS = {}]'
.\../include/misc_image.h:57:81:   required from 'void visit_fields(DCamera&, F) [with F = field_decoder]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = DCamera; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../include/dcam.h:354:93:   required from here
.\../third_party/json.h:140:79: error: no type named 'type' in 'struct std::enable_if<false, void>'
.\../third_party/json.h: In instantiation of 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 2>; TS = {}]':
.\../include/misc_image.h:57:81:   required from 'void visit_fields(DCamera&, F) [with F = field_decoder]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = DCamera; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../include/dcam.h:354:93:   required from here
.\../third_party/json.h:141:31: note: candidate: 'template<class T, int N> void from_json(T (&)[N], const json::value&)'
 template<class T, int N> void from_json(T (& a)[N], const json::value & val) { for(int i=0; i<N; ++i) from_json(a[i], val[i]); }
                               ^~~~~~~~~
.\../third_party/json.h:141:31: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   mismatched types 'T [N]' and 'linalg::vec<float, 2>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:142:34: note: candidate: 'template<class T, long long unsigned int N> void from_json(std::array<_Tp, _Nm>&, const json::value&)'
 template<class T, size_t N> void from_json(std::array<T,N> & a, const json::value & val) { for(size_t i=0; i<N; ++i) from_json(a[i], val[i]); }
                                  ^~~~~~~~~
.\../third_party/json.h:142:34: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 2>' is not derived from 'std::array<_Tp, _Nm>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:143:24: note: candidate: 'template<class T> void from_json(std::vector<T>&, const json::value&)'
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }
                        ^~~~~~~~~
.\../third_party/json.h:143:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 2>' is not derived from 'std::vector<T>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:144:24: note: candidate: 'template<class T> void from_json(std::map<std::__cxx11::basic_string<char>, T>&, const json::value&)'
 template<class T> void from_json(std::map<std::string, T> & m, const json::value & val) { for (auto &e : val.get_object()) { from_json(m[e.first], e.second); } }
                        ^~~~~~~~~
.\../third_party/json.h:144:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 2>' is not derived from 'std::map<std::__cxx11::basic_string<char>, T>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h: In instantiation of 'void from_json(std::vector<T>&, const json::value&) [with T = linalg::vec<float, 3>]':
.\../third_party/json.h:145:144:   required from 'void field_decoder::operator()(const char*, T&, TS ...) [with T = std::vector<linalg::vec<float, 3> >; TS = {}]'
.\../include/../third_party/wingmesh.h:975:3:   required from 'void visit_fields(WingMesh&, F) [with F = field_decoder]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = WingMesh; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = WingMesh]'
.\../include/physmodel.h:447:48:   required from here
.\../third_party/json.h:143:157: error: no matching function for call to 'from_json(__gnu_cxx::__alloc_traits<std::allocator<linalg::vec<float, 3> >, linalg::vec<float, 3> >::value_type&, const json::value&)'
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }

                                                    ~~~~~~~~~^~~~~~~~~~~~~~
.\../third_party/json.h:138:13: note: candidate: 'void from_json(bool&, const json::value&)'
 inline void from_json(bool & b, const json::value & val) { b = val.is_true(); }
             ^~~~~~~~~
.\../third_party/json.h:138:13: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<linalg::vec<float, 3> >, linalg::vec<float, 3> >::value_type' {aka 'linalg::vec<float, 3>'} to 'bool&'
.\../third_party/json.h:139:13: note: candidate: 'void from_json(std::__cxx11::string&, const json::value&)'
 inline void from_json(std::string & s, const json::value & val) { s = val.string(); }
             ^~~~~~~~~
.\../third_party/json.h:139:13: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<linalg::vec<float, 3> >, linalg::vec<float, 3> >::value_type' {aka 'linalg::vec<float, 3>'} to 'std::__cxx11::string&' {aka 'std::__cxx11::basic_string<char>&'}
.\../third_party/json.h:140:79: note: candidate: 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&)'
 template<class T> typename std::enable_if<std::is_arithmetic<T>::value>::type from_json(T & n,
const json::value & val) { n = val.number<T>(); }
                                                                               ^~~~~~~~~
.\../third_party/json.h:140:79: note:   template argument deduction/substitution failed:
.\../third_party/json.h: In substitution of 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&) [with T = linalg::vec<float, 3>]':
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = linalg::vec<float, 3>]'
.\../third_party/json.h:145:144:   required from 'void field_decoder::operator()(const char*, T&, TS ...) [with T = std::vector<linalg::vec<float, 3> >; TS = {}]'
.\../include/../third_party/wingmesh.h:975:3:   required from 'void visit_fields(WingMesh&, F) [with F = field_decoder]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = WingMesh; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = WingMesh]'
.\../include/physmodel.h:447:48:   required from here
.\../third_party/json.h:140:79: error: no type named 'type' in 'struct std::enable_if<false, void>'
.\../third_party/json.h: In instantiation of 'void from_json(std::vector<T>&, const json::value&) [with T = linalg::vec<float, 3>]':
.\../third_party/json.h:145:144:   required from 'void field_decoder::operator()(const char*, T&, TS ...) [with T = std::vector<linalg::vec<float, 3> >; TS = {}]'
.\../include/../third_party/wingmesh.h:975:3:   required from 'void visit_fields(WingMesh&, F) [with F = field_decoder]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = WingMesh; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = WingMesh]'
.\../include/physmodel.h:447:48:   required from here
.\../third_party/json.h:141:31: note: candidate: 'template<class T, int N> void from_json(T (&)[N], const json::value&)'
 template<class T, int N> void from_json(T (& a)[N], const json::value & val) { for(int i=0; i<N; ++i) from_json(a[i], val[i]); }
                               ^~~~~~~~~
.\../third_party/json.h:141:31: note:   template argument deduction/substitution failed:
.\../third_party/json.h:143:157: note:   mismatched types 'T [N]' and '__gnu_cxx::__alloc_traits<std::allocator<linalg::vec<float, 3> >, linalg::vec<float, 3> >::value_type' {aka 'linalg::vec<float, 3>'}
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }

                                                    ~~~~~~~~~^~~~~~~~~~~~~~
.\../third_party/json.h:142:34: note: candidate: 'template<class T, long long unsigned int N> void from_json(std::array<_Tp, _Nm>&, const json::value&)'
 template<class T, size_t N> void from_json(std::array<T,N> & a, const json::value & val) { for(size_t i=0; i<N; ++i) from_json(a[i], val[i]); }
                                  ^~~~~~~~~
.\../third_party/json.h:142:34: note:   template argument deduction/substitution failed:
.\../third_party/json.h:143:157: note:   '__gnu_cxx::__alloc_traits<std::allocator<linalg::vec<float, 3> >, linalg::vec<float, 3> >::value_type' {aka 'linalg::vec<float, 3>'} is not derived from 'std::array<_Tp, _Nm>'
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }

                                                    ~~~~~~~~~^~~~~~~~~~~~~~
.\../third_party/json.h:143:24: note: candidate: 'template<class T> void from_json(std::vector<T>&, const json::value&)'
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }
                        ^~~~~~~~~
.\../third_party/json.h:143:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:143:157: note:   '__gnu_cxx::__alloc_traits<std::allocator<linalg::vec<float, 3> >, linalg::vec<float, 3> >::value_type' {aka 'linalg::vec<float, 3>'} is not derived from 'std::vector<T>'
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }

                                                    ~~~~~~~~~^~~~~~~~~~~~~~
.\../third_party/json.h: In instantiation of 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 3>; TS = {}]':
.\../include/physmodel.h:244:76:   required from 'void PhysModel::Joint::visit_fields(F) [with F = field_decoder]'
.\../third_party/misc.h:110:58:   required from 'void visit_fields(T&, F) [with F = field_decoder; T = PhysModel::Joint]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = PhysModel::Joint; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = PhysModel::Joint]'
.\../include/physmodel.h:449:36:   required from here
.\../third_party/json.h:145:144: error: no matching function for call to 'from_json(linalg::vec<float, 3>&, const json::value&)'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:138:13: note: candidate: 'void from_json(bool&, const json::value&)'
 inline void from_json(bool & b, const json::value & val) { b = val.is_true(); }
             ^~~~~~~~~
.\../third_party/json.h:138:13: note:   no known conversion for argument 1 from 'linalg::vec<float, 3>' to 'bool&'
.\../third_party/json.h:139:13: note: candidate: 'void from_json(std::__cxx11::string&, const json::value&)'
 inline void from_json(std::string & s, const json::value & val) { s = val.string(); }
             ^~~~~~~~~
.\../third_party/json.h:139:13: note:   no known conversion for argument 1 from 'linalg::vec<float, 3>' to 'std::__cxx11::string&' {aka 'std::__cxx11::basic_string<char>&'}
.\../third_party/json.h:140:79: note: candidate: 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&)'
 template<class T> typename std::enable_if<std::is_arithmetic<T>::value>::type from_json(T & n,
const json::value & val) { n = val.number<T>(); }
                                                                               ^~~~~~~~~
.\../third_party/json.h:140:79: note:   template argument deduction/substitution failed:
.\../third_party/json.h: In substitution of 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&) [with T = linalg::vec<float, 3>]':
.\../third_party/json.h:145:144:   required from 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 3>; TS = {}]'
.\../include/physmodel.h:244:76:   required from 'void PhysModel::Joint::visit_fields(F) [with F = field_decoder]'
.\../third_party/misc.h:110:58:   required from 'void visit_fields(T&, F) [with F = field_decoder; T = PhysModel::Joint]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = PhysModel::Joint; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = PhysModel::Joint]'
.\../include/physmodel.h:449:36:   required from here
.\../third_party/json.h:140:79: error: no type named 'type' in 'struct std::enable_if<false, void>'
.\../third_party/json.h: In instantiation of 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 3>; TS = {}]':
.\../include/physmodel.h:244:76:   required from 'void PhysModel::Joint::visit_fields(F) [with F = field_decoder]'
.\../third_party/misc.h:110:58:   required from 'void visit_fields(T&, F) [with F = field_decoder; T = PhysModel::Joint]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = PhysModel::Joint; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = PhysModel::Joint]'
.\../include/physmodel.h:449:36:   required from here
.\../third_party/json.h:141:31: note: candidate: 'template<class T, int N> void from_json(T (&)[N], const json::value&)'
 template<class T, int N> void from_json(T (& a)[N], const json::value & val) { for(int i=0; i<N; ++i) from_json(a[i], val[i]); }
                               ^~~~~~~~~
.\../third_party/json.h:141:31: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   mismatched types 'T [N]' and 'linalg::vec<float, 3>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:142:34: note: candidate: 'template<class T, long long unsigned int N> void from_json(std::array<_Tp, _Nm>&, const json::value&)'
 template<class T, size_t N> void from_json(std::array<T,N> & a, const json::value & val) { for(size_t i=0; i<N; ++i) from_json(a[i], val[i]); }
                                  ^~~~~~~~~
.\../third_party/json.h:142:34: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 3>' is not derived from 'std::array<_Tp, _Nm>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:143:24: note: candidate: 'template<class T> void from_json(std::vector<T>&, const json::value&)'
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }
                        ^~~~~~~~~
.\../third_party/json.h:143:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 3>' is not derived from 'std::vector<T>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:144:24: note: candidate: 'template<class T> void from_json(std::map<std::__cxx11::basic_string<char>, T>&, const json::value&)'
 template<class T> void from_json(std::map<std::string, T> & m, const json::value & val) { for (auto &e : val.get_object()) { from_json(m[e.first], e.second); } }
                        ^~~~~~~~~
.\../third_party/json.h:144:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 3>' is not derived from 'std::map<std::__cxx11::basic_string<char>, T>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h: In instantiation of 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 4>; TS = {}]':
.\../include/physmodel.h:244:140:   required from 'void PhysModel::Joint::visit_fields(F) [with
F = field_decoder]'
.\../third_party/misc.h:110:58:   required from 'void visit_fields(T&, F) [with F = field_decoder; T = PhysModel::Joint]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = PhysModel::Joint; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = PhysModel::Joint]'
.\../include/physmodel.h:449:36:   required from here
.\../third_party/json.h:145:144: error: no matching function for call to 'from_json(linalg::vec<float, 4>&, const json::value&)'
.\../third_party/json.h:138:13: note: candidate: 'void from_json(bool&, const json::value&)'
 inline void from_json(bool & b, const json::value & val) { b = val.is_true(); }
             ^~~~~~~~~
.\../third_party/json.h:138:13: note:   no known conversion for argument 1 from 'linalg::vec<float, 4>' to 'bool&'
.\../third_party/json.h:139:13: note: candidate: 'void from_json(std::__cxx11::string&, const json::value&)'
 inline void from_json(std::string & s, const json::value & val) { s = val.string(); }
             ^~~~~~~~~
.\../third_party/json.h:139:13: note:   no known conversion for argument 1 from 'linalg::vec<float, 4>' to 'std::__cxx11::string&' {aka 'std::__cxx11::basic_string<char>&'}
.\../third_party/json.h:140:79: note: candidate: 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&)'
 template<class T> typename std::enable_if<std::is_arithmetic<T>::value>::type from_json(T & n,
const json::value & val) { n = val.number<T>(); }
                                                                               ^~~~~~~~~
.\../third_party/json.h:140:79: note:   template argument deduction/substitution failed:
.\../third_party/json.h: In substitution of 'template<class T> typename std::enable_if<std::is_arithmetic<_Tp>::value, void>::type from_json(T&, const json::value&) [with T = linalg::vec<float, 4>]':
.\../third_party/json.h:145:144:   required from 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 4>; TS = {}]'
.\../include/physmodel.h:244:140:   required from 'void PhysModel::Joint::visit_fields(F) [with
F = field_decoder]'
.\../third_party/misc.h:110:58:   required from 'void visit_fields(T&, F) [with F = field_decoder; T = PhysModel::Joint]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = PhysModel::Joint; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = PhysModel::Joint]'
.\../include/physmodel.h:449:36:   required from here
.\../third_party/json.h:140:79: error: no type named 'type' in 'struct std::enable_if<false, void>'
.\../third_party/json.h: In instantiation of 'void field_decoder::operator()(const char*, T&, TS ...) [with T = linalg::vec<float, 4>; TS = {}]':
.\../include/physmodel.h:244:140:   required from 'void PhysModel::Joint::visit_fields(F) [with
F = field_decoder]'
.\../third_party/misc.h:110:58:   required from 'void visit_fields(T&, F) [with F = field_decoder; T = PhysModel::Joint]'
.\../third_party/json.h:146:130:   required from 'typename std::enable_if<std::is_class<_Tp>::value>::type from_json(T&, const json::value&) [with T = PhysModel::Joint; typename std::enable_if<std::is_class<_Tp>::value>::type = void]'
.\../third_party/json.h:143:157:   required from 'void from_json(std::vector<T>&, const json::value&) [with T = PhysModel::Joint]'
.\../include/physmodel.h:449:36:   required from here
.\../third_party/json.h:141:31: note: candidate: 'template<class T, int N> void from_json(T (&)[N], const json::value&)'
 template<class T, int N> void from_json(T (& a)[N], const json::value & val) { for(int i=0; i<N; ++i) from_json(a[i], val[i]); }
                               ^~~~~~~~~
.\../third_party/json.h:141:31: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   mismatched types 'T [N]' and 'linalg::vec<float, 4>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:142:34: note: candidate: 'template<class T, long long unsigned int N> void from_json(std::array<_Tp, _Nm>&, const json::value&)'
 template<class T, size_t N> void from_json(std::array<T,N> & a, const json::value & val) { for(size_t i=0; i<N; ++i) from_json(a[i], val[i]); }
                                  ^~~~~~~~~
.\../third_party/json.h:142:34: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 4>' is not derived from 'std::array<_Tp, _Nm>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:143:24: note: candidate: 'template<class T> void from_json(std::vector<T>&, const json::value&)'
 template<class T> void from_json(std::vector<T> & v, const json::value & val) { v.resize(val.get_array().size()); for(size_t i=0; i<v.size(); ++i) from_json(v[i], val[i]); }
                        ^~~~~~~~~
.\../third_party/json.h:143:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 4>' is not derived from 'std::vector<T>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field, TS...) { from_json(field, v[name]); } };

                                       ~~~~~~~~~^~~~~~~~~~~~~~~~
.\../third_party/json.h:144:24: note: candidate: 'template<class T> void from_json(std::map<std::__cxx11::basic_string<char>, T>&, const json::value&)'
 template<class T> void from_json(std::map<std::string, T> & m, const json::value & val) { for (auto &e : val.get_object()) {
from_json(m[e.first], e.second); } }
                        ^~~~~~~~~
.\../third_party/json.h:144:24: note:   template argument deduction/substitution failed:
.\../third_party/json.h:145:144: note:   'linalg::vec<float, 4>' is not derived from 'std::map<std::__cxx11::basic_string<char>, T>'
 struct field_decoder { const json::value & v; template<class T, class... TS> void operator () (const char * name, T & field,
TS...) { from_json(field, v[name]); } };
MSLewis522 commented 3 years ago

Update: I have similar issues whenever I try to build anything from these folders. (openvr demo, synthetic hand tracker, etc)

melax commented 3 years ago

Errors like that certainly aren't obvious. One possibility... microsoft visual c++ (msvc) tends to be more forgiving about the ordering of overloaded template function. trying msvc with stricter conformance mode (/permissive- flag), attempts to compile generate similar error messages. To fix... Moving the serialization support for the linalg types (float3, int2, etc) to put them right inside of the json.h, to solved this problem.

can you try grabbing the two json related header files in the attached zip and replacing the existing versions in the hand_tracking_samples/third_party/ subdirectory?

json_compilation_possible_fix.zip

MSLewis522 commented 3 years ago

Ah ! You're a complete lifesaver! But.... different errors now </3 looks like its having trouble with the temp files created while trying to run the .exe version of the realtime-hand-tracker.cpp

C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xeb5): undefined reference to __imp_glPushAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xec3): undefined reference toimp_glDisable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xed1): undefined reference to __imp_glDisable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xedf): undefined reference toimp_glDisable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xeed): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xef6): undefined reference toimp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xeff): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xf40): undefined reference toimp_glOrtho' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xf4e): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xf57): undefined reference toimp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xf60): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xf6e): undefined reference toimp_glEnable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xf81): undefined reference to __imp_glPixelStorei' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xf97): undefined reference toimp_glBindTexture' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xfb0): undefined reference to __imp_glTexParameteri' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xfc9): undefined reference toimp_glTexParameteri' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xfe2): undefined reference to __imp_glTexParameteri' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0xffb): undefined reference toimp_glTexParameteri' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x1016): undefined reference to __imp_glTexEnvf' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x105d): undefined reference toimp_glTexImage2D' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x106b): undefined reference to __imp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x108c): undefined reference toimp_glColor3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x1135): undefined reference to __imp_glTexCoord2f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x118d): undefined reference toimp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x119b): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x11a4): undefined reference toimp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x11b2): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x11bb): undefined reference toimp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x11c4): undefined reference to __imp_glPopAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x1658): undefined reference toimp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x1681): undefined reference to __imp_glColor4f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x182c): undefined reference toimp_glTexCoord2f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x185b): undefined reference to __imp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x19a3): undefined reference toimp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x19cc): undefined reference to __imp_glColor4f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x1ba7): undefined reference toimp_glTexCoord2f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x1c30): undefined reference to __imp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x5b4e): undefined reference tors_set_device_options' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x5c51): undefined reference to rs_reset_device_options_to_default' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x5ccd): undefined reference tors_set_device_options' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x5d44): undefined reference to rs_set_device_options' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x5d81): undefined reference tors_set_device_options' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x6454): undefined reference to __imp_glPushAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x6479): undefined reference toimp_glViewport' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x64ce): undefined reference to __imp_glClearColor' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x64dc): undefined reference toimp_glClear' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text+0x6e13): undefined reference to __imp_glPopAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z11glVertex3fvRKN6linalg3vecIfLi3EEE[_Z11glVertex3fvRKN6linalg3vecIfLi3EEE]+0x16): undefined reference toimp_glVertex3fv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z11glNormal3fvRKN6linalg3vecIfLi3EEE[_Z11glNormal3fvRKN6linalg3vecIfLi3EEE]+0x16): undefined reference to __imp_glNormal3fv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z13glTexCoord2fvRKN6linalg3vecIfLi2EEE[_Z13glTexCoord2fvRKN6linalg3vecIfLi2EEE]+0x16): undefined reference toimp_glTexCoord2fv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z10glColor3fvRKN6linalg3vecIfLi3EEE[_Z10glColor3fvRKN6linalg3vecIfLi3EEE]+0x16): undefined reference to __imp_glColor3fv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z10glColor4fvRKN6linalg3vecIfLi4EEE[_Z10glColor4fvRKN6linalg3vecIfLi4EEE]+0x16): undefined reference toimp_glColor4fv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z13glMultMatrixfRKN6linalg3matIfLi4ELi4EEE[_Z13glMultMatrixfRKN6linalg3matIfLi4ELi4EEE]+0x16): undefined reference to __imp_glMultMatrixf' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z13glPerspectiveffff[_Z13glPerspectiveffff]+0xd6): undefined reference toimp_glFrustum' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin18CreateOpenGLWindowEPKc[_ZN5GLWin18CreateOpenGLWindowEPKc]+0xbe): undefined reference to __imp_ChoosePixelFormat' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin18CreateOpenGLWindowEPKc[_ZN5GLWin18CreateOpenGLWindowEPKc]+0x111): undefined reference toimp_SetPixelFormat' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin18CreateOpenGLWindowEPKc[_ZN5GLWin18CreateOpenGLWindowEPKc]+0x17e): undefined reference to RegisterTouchWindow(bool, float)' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin10WinReshapeEii[_ZN5GLWin10WinReshapeEii]+0x4d): undefined reference to__imp_glViewport' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin10WinReshapeEii[_ZN5GLWin10WinReshapeEii]+0x5b): undefined reference to `imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin10WinReshapeEii[_ZN5GLWin10WinReshapeEii]+0x64): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin10WinReshapeEii[_ZN5GLWin10WinReshapeEii]+0xa3): undefined reference toimp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin10WinReshapeEii[_ZN5GLWin10WinReshapeEii]+0xac): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin19DestroyOpenGLWindowEv[_ZN5GLWin19DestroyOpenGLWindowEv]+0x25): undefined reference toimp_wglMakeCurrent' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin19DestroyOpenGLWindowEv[_ZN5GLWin19DestroyOpenGLWindowEv]+0x5a): undefined reference to __imp_wglDeleteContext' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x2f): undefined reference toimp_glPushAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x3d): undefined reference to __imp_glDisable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x4b): undefined reference toimp_glDisable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x59): undefined reference to __imp_glDisable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x67): undefined reference toimp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x70): undefined reference to __imp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x79): undefined reference toimp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x87): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x90): undefined reference toimp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x99): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0xba): undefined reference toimp_glGetIntegerv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x11a): undefined reference to __imp_glOrtho' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x1ba): undefined reference toimp_glEnableClientState' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x1da): undefined reference to __imp_glVertexPointer' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x1f6): undefined reference toimp_glDrawArrays' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x204): undefined reference to __imp_glDisableClientState' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x20d): undefined reference toimp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x21b): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x224): undefined reference toimp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc[_ZN5GLWin12PrintStringRERKN6linalg3vecIfLi2EEEPKc]+0x22d): undefined reference to __imp_glPopAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin13CoordTexToPixEN6linalg3vecIiLi2EEEi[_ZN5GLWin13CoordTexToPixEN6linalg3vecIiLi2EEEi]+0x2f): undefined reference toimp_glGetIntegerv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin12PrintStringPEN6linalg3vecIiLi2EEEPKcz[_ZN5GLWin12PrintStringPEN6linalg3vecIiLi2EEEPKcz]+0x7a): undefined reference to __imp_glGetIntegerv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWinC1EPKcii[_ZN5GLWinC1EPKcii]+0x10a): undefined reference toimp_wglCreateContext' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWinC1EPKcii[_ZN5GLWinC1EPKcii]+0x13a): undefined reference to __imp_wglMakeCurrent' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWinC1EPKcii[_ZN5GLWinC1EPKcii]+0x173): undefined reference toimp_glEnable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN5GLWin11SwapBuffersEv[_ZN5GLWin11SwapBuffersEv]+0x1d): undefined reference to __imp_SwapBuffers' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f[_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f]+0x22): undefined reference toimp_glPushAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f[_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f]+0x32): undefined reference to __imp_glLineWidth' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f[_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f]+0x40): undefined reference toimp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f[_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f]+0xda): undefined reference to __imp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f[_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f]+0xeb): undefined reference toimp_glLineWidth' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f[_Z9drawlinesRKSt6vectorISt4pairIN6linalg3vecIfLi3EEES3_ESaIS4_EES3_f]+0xf4): undefined reference to __imp_glPopAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z8MeshDrawRK4Mesh[_Z8MeshDrawRK4Mesh]+0x12): undefined reference toimp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z8MeshDrawRK4Mesh[_Z8MeshDrawRK4Mesh]+0x50): undefined reference to __imp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z8MeshDrawRK4Mesh[_Z8MeshDrawRK4Mesh]+0x101): undefined reference toimp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_Z8MeshDrawRK4Mesh[_Z8MeshDrawRK4Mesh]+0x10a): undefined reference to __imp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1Ev[_ZN12render_sceneC1Ev]+0x18): undefined reference toimp_glPushAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1Ev[_ZN12render_sceneC1Ev]+0x26): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1Ev[_ZN12render_sceneC1Ev]+0x2f): undefined reference toimp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1Ev[_ZN12render_sceneC1Ev]+0x38): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1Ev[_ZN12render_sceneC1Ev]+0x59): undefined reference toimp_glGetIntegerv' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1Ev[_ZN12render_sceneC1Ev]+0xbd): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1Ev[_ZN12render_sceneC1Ev]+0xc6): undefined reference toimp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1Ev[_ZN12render_sceneC1Ev]+0xcf): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x3f): undefined reference to imp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x11d): undefined reference to __imp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x12b): undefined reference toimp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x1ce): undefined reference to __imp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x1dc): undefined reference toimp_glPushAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x1ea): undefined reference to __imp_glEnable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x20b): undefined reference toimp_glColor3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x219): undefined reference to __imp_glEnable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x227): undefined reference toimp_glEnable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE[_ZN12render_sceneC1ERK4PoseRKSt6vectorIP4MeshSaIS5_EERKS3_I9SegmentPCSaISA_EERKS3_I8VertexPCSaISF_EE]+0x29c): undefined reference to __imp_glPopAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneD1Ev[_ZN12render_sceneD1Ev]+0x14): undefined reference toimp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneD1Ev[_ZN12render_sceneD1Ev]+0x1d): undefined reference to __imp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneD1Ev[_ZN12render_sceneD1Ev]+0x2b): undefined reference toimp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneD1Ev[_ZN12render_sceneD1Ev]+0x34): undefined reference to __imp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12render_sceneD1Ev[_ZN12render_sceneD1Ev]+0x3d): undefined reference toimp_glPopAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0x1c): undefined reference to __imp_glPushAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0x4a): undefined reference toimp_glViewport' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0x58): undefined reference to __imp_glEnable' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0x86): undefined reference toimp_glScissor' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0x94): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0x9d): undefined reference toimp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0xab): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0xb4): undefined reference toimp_glPushMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget9DrawBeginEv[_ZN6Widget9DrawBeginEv]+0xbd): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget7DrawEndEv[_ZN6Widget7DrawEndEv]+0x14): undefined reference toimp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget7DrawEndEv[_ZN6Widget7DrawEndEv]+0x1d): undefined reference to __imp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget7DrawEndEv[_ZN6Widget7DrawEndEv]+0x2b): undefined reference toimp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget7DrawEndEv[_ZN6Widget7DrawEndEv]+0x34): undefined reference to __imp_glPopMatrix' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget7DrawEndEv[_ZN6Widget7DrawEndEv]+0x63): undefined reference toimp_glViewport' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget7DrawEndEv[_ZN6Widget7DrawEndEv]+0x6c): undefined reference to __imp_glPopAttrib' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget5orthoEv[_ZN6Widget5orthoEv]+0x14): undefined reference toimp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget5orthoEv[_ZN6Widget5orthoEv]+0x1d): undefined reference to __imp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget5orthoEv[_ZN6Widget5orthoEv]+0x5e): undefined reference toimp_glOrtho' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget5orthoEv[_ZN6Widget5orthoEv]+0x6c): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN6Widget5orthoEv[_ZN6Widget5orthoEv]+0x75): undefined reference toimp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x28): undefined reference to __imp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0xaa): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0xc3): undefined reference to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0xe0): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x101): undefined reference to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x10a): undefined reference toimp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x118): undefined reference to __imp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x121): undefined reference toimp_glLoadIdentity' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x170): undefined reference to __imp_glOrtho' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x17e): undefined reference toimp_glMatrixMode' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x18c): undefined reference to __imp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x248): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x269): undefined reference to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x2a3): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x2fa): undefined reference to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x355): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x387): more undefined references to __imp_glVertex3f' follow C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x447): undefined reference toimp_glColor3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetSwitch6RenderEv[_ZN12WidgetSwitch6RenderEv]+0x450): undefined reference to __imp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetButton6RenderEv[_ZN12WidgetButton6RenderEv]+0x32): undefined reference toimp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetButton6RenderEv[_ZN12WidgetButton6RenderEv]+0x14c): undefined reference to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetButton6RenderEv[_ZN12WidgetButton6RenderEv]+0x165): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetButton6RenderEv[_ZN12WidgetButton6RenderEv]+0x182): undefined reference to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetButton6RenderEv[_ZN12WidgetButton6RenderEv]+0x1a3): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetButton6RenderEv[_ZN12WidgetButton6RenderEv]+0x1ac): undefined reference to __imp_glEnd' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN12WidgetButton6RenderEv[_ZN12WidgetButton6RenderEv]+0x27c): undefined reference toimp_glColor3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs5errorC1EP8rs_error[_ZN2rs5errorC1EP8rs_error]+0x1e): undefined reference to rs_get_error_message' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs5errorC1EP8rs_error[_ZN2rs5errorC1EP8rs_error]+0x63): undefined reference tors_get_failed_function' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs5errorC1EP8rs_error[_ZN2rs5errorC1EP8rs_error]+0x8a): undefined reference to rs_get_failed_function' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs5errorC1EP8rs_error[_ZN2rs5errorC1EP8rs_error]+0xed): undefined reference tors_get_failed_args' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs5errorC1EP8rs_error[_ZN2rs5errorC1EP8rs_error]+0x114): undefined reference to rs_get_failed_args' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs5errorC1EP8rs_error[_ZN2rs5errorC1EP8rs_error]+0x177): undefined reference tors_free_error' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs7contextC1Ev[_ZN2rs7contextC1Ev]+0x21): undefined reference to rs_create_context' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs7contextD1Ev[_ZN2rs7contextD1Ev]+0x1c): undefined reference tors_delete_context' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs7context16get_device_countEv[_ZNK2rs7context16get_device_countEv]+0x23): undefined reference to rs_get_device_count' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs7context10get_deviceEi[_ZN2rs7context10get_deviceEi]+0x2c): undefined reference tors_get_device' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device8get_nameEv[_ZNK2rs6device8get_nameEv]+0x20): undefined reference to rs_get_device_name' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device10get_serialEv[_ZNK2rs6device10get_serialEv]+0x20): undefined reference tors_get_device_serial' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device20get_firmware_versionEv[_ZNK2rs6device20get_firmware_versionEv]+0x20): undefined reference to rs_get_device_firmware_version' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device14get_extrinsicsENS_6streamES1_[_ZNK2rs6device14get_extrinsicsENS_6streamES1_]+0x39): undefined reference tors_get_device_extrinsics' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device15get_depth_scaleEv[_ZNK2rs6device15get_depth_scaleEv]+0x20): undefined reference to rs_get_device_depth_scale' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device15supports_optionENS_6optionE[_ZNK2rs6device15supports_optionENS_6optionE]+0x28): undefined reference tors_device_supports_option' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device21get_stream_mode_countENS_6streamE[_ZNK2rs6device21get_stream_mode_countENS_6streamE]+0x28): undefined reference to rs_get_stream_mode_count' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs6device13enable_streamENS_6streamEiiNS_6formatEiNS_20output_buffer_formatE[_ZN2rs6device13enable_streamENS_6streamEiiNS_6formatEiNS_20output_buffer_formatE]+0x52): undefined reference tors_enable_stream_ex' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device21get_stream_intrinsicsENS_6streamE[_ZNK2rs6device21get_stream_intrinsicsENS_6streamE]+0x32): undefined reference to rs_get_stream_intrinsics' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs6device5startENS_6sourceE[_ZN2rs6device5startENS_6sourceE]+0x2b): undefined reference tors_start_source' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs6device10set_optionENS_6optionEd[_ZN2rs6device10set_optionENS_6optionEd]+0x36): undefined reference to rs_set_device_option' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN2rs6device15wait_for_framesEv[_ZN2rs6device15wait_for_framesEv]+0x20): undefined reference tors_wait_for_frames' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device8supportsENS_12capabilitiesE[_ZNK2rs6device8supportsENS_12capabilitiesE]+0x28): undefined reference to rs_supports' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZNK2rs6device14get_frame_dataENS_6streamE[_ZNK2rs6device14get_frame_dataENS_6streamE]+0x28): undefined reference tors_get_frame_data' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3[_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3]+0x2d): undefined reference to __imp_glBegin' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+0x6a): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3[_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3]+0x83): undefined reference to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+0xa0): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3[_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3]+0xc1): undefined reference to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+0xe6): undefined reference toimp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3[_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3]+0x103): more undefined references to __imp_glVertex3f' follow C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+0x1ee): undefined reference to__imp_glColor3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3[_ZN13WidgetSliderIfE7drawbarEfN6linalg3vecIfLi3EEES3]+0x1f7): undefined reference to `__imp_glEnd'

MSLewis522 commented 3 years ago

Wait sorry not run the .exe, these are the errors when trying to build the exe from the cpp

melax commented 3 years ago

These look like link-time errors, and seem to indicate it is not finding the opengl library. I'm not as familiar with g++. Perhaps you need to add -lGL on the command line so it will link with the opengl library. Start first with trying to compile and run the synthetic hand tracker demo program. other than opengl, it doesn't have additional dependencies. It doesn't need the realsense camera (and associated library) since it creates a fake depth map from rendering to the z-buffer, so For all the programs, in an effort to hopefully compile out of the box on PCs and maximize compatibility, the source code only uses opengl version 1.1 (opengl red book) function calls. Also, when compiling the source, you may want to add a flag to optimize the code, -O, so it isn't painfully slow.

An alternative suggestion... From the filenames in the error message above, it looks like your on a PC Windows system. Have you tried just using visual studio (such as visual studio community 2019 free version), which uses the Microsoft visual c++ (MSVC) compiler? Is that an option? then the project files ( .sln and .vcxproj files) include any library dependencies.