hand_tracking_samples icon indicating copy to clipboard operation
hand_tracking_samples copied to clipboard

Trouble compiling cpp to exe

Open MSLewis522 opened this issue 3 years ago • 5 comments

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&'} .../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, 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, 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&'} .../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, 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, 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&'} .../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&'} .../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, 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, 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&'} .../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, 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, 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 avatar Nov 22 '20 01:11 MSLewis522

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

MSLewis522 avatar Nov 22 '20 01:11 MSLewis522

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

melax avatar Nov 23 '20 05:11 melax

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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to rs_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 to rs_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 to rs_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 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]+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 to __imp_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 to __imp_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 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]+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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to __imp_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 to rs_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 to rs_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 to rs_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 to rs_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 to rs_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 to rs_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 to rs_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 to rs_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 to rs_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 to rs_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 to rs_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 to rs_get_frame_data' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+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 to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+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 to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+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 to __imp_glVertex3f' C:\Users\O62220\AppData\Local\Temp\ccSc9f5t.o:realtime-hand-tracker.cpp:(.text$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+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$_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_[_ZN13WidgetSlider_IfE7drawbarEfN6linalg3vecIfLi3EEES3_]+0x1f7): undefined reference to __imp_glEnd'

MSLewis522 avatar Nov 23 '20 05:11 MSLewis522

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

MSLewis522 avatar Nov 23 '20 05:11 MSLewis522

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.

melax avatar Nov 23 '20 19:11 melax