Как мне скомпилировать мое приложение со статической библиотекой? - PullRequest
0 голосов
/ 16 мая 2019

В настоящее время я пытаюсь использовать библиотекуactphysics3d для создания простого симулятора столкновения частиц.https://www.reactphysics3d.com/

Я пытался скомпилировать файл c ++ со статической библиотекой, но он не компилируется хорошо.Структура каталогов выглядит примерно так:

ParticleSimulation
 |
 |-- test.cpp
 |    
 |-- lib  
 |   |-- libreactphysics3d.a
 |    
 |-- reactphysics3d
 |   |-- src
 |       |-- reactphysics3d.h

Мой тестовый код

#include "reactphysics3d.h"

using namespace reactphysics3d;

int main() {
    rp3d::SphereShape * sphereShape = new SphereShape(1.0);
    delete sphereShape;
}

Я попытался скомпилировать с

gcc -std=c++11 -Ireactphysics3d/src -Llib -lreactphysics3d -o myapp test.cpp ./lib/libreactphysics3d.a

Слишком полное сообщение об ошибкедолго размещать здесь (более 30000 символов превышает лимит одного сообщения Stackoverflow).Первые строки сообщения:

    Undefined symbols for architecture x86_64:
  "std::__1::__basic_string_common<true>::__throw_length_error() const", referenced from:
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str() const in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
      reactphysics3d::ConcaveMeshShape::to_string() const in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "std::__1::ios_base::getloc() const", referenced from:
      reactphysics3d::ConcaveMeshShape::to_string() const in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "std::runtime_error::runtime_error(char const*)", referenced from:
      reactphysics3d::HalfEdgeStructure::init() in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      ...
  "std::runtime_error::~runtime_error()", referenced from:
      reactphysics3d::HalfEdgeStructure::init() in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      ...
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string<std::nullptr_t>(char const*) in test-db2b03.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&, char const*) in test-db2b03.o
      reactphysics3d::FixedJoint::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::Vector3::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::Quaternion::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::HingeJoint::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      reactphysics3d::Vector3::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      reactphysics3d::Quaternion::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      ...
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*, unsigned long)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in test-db2b03.o
      reactphysics3d::FixedJoint::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::Vector3::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::Quaternion::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::HingeJoint::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      reactphysics3d::Vector3::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      reactphysics3d::Quaternion::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      ...
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::insert(unsigned long, char const*)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) in test-db2b03.o
      reactphysics3d::FixedJoint::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::Vector3::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::Quaternion::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      reactphysics3d::HingeJoint::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      reactphysics3d::Vector3::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      reactphysics3d::Quaternion::to_string() const in libreactphysics3d.a(HingeJoint.cpp.o)
      ...
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::resize(unsigned long, char)", referenced from:
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int) in libreactphysics3d.a(ConcaveMeshShape.cpp.o)

, а последние -

      non-virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      non-virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      ...
  "std::__1::to_string(float)", referenced from:
      reactphysics3d::SphereShape::to_string() const in test-db2b03.o
      reactphysics3d::CapsuleShape::to_string() const in test-db2b03.o
      reactphysics3d::SliderJoint::to_string() const in test-db2b03.o
      reactphysics3d::HingeJoint::to_string() const in test-db2b03.o
      reactphysics3d::Vector3::to_string() const in test-db2b03.o
      reactphysics3d::Quaternion::to_string() const in test-db2b03.o
      reactphysics3d::Vector3::to_string() const in libreactphysics3d.a(FixedJoint.cpp.o)
      ...
  "std::terminate()", referenced from:
      ___clang_call_terminate in test-db2b03.o
      ___clang_call_terminate in libreactphysics3d.a(TriangleShape.cpp.o)
      ___clang_call_terminate in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      ___clang_call_terminate in libreactphysics3d.a(BoxShape.cpp.o)
      ___clang_call_terminate in libreactphysics3d.a(DynamicAABBTree.cpp.o)
      ___clang_call_terminate in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      ___clang_call_terminate in libreactphysics3d.a(mathematics_functions.cpp.o)
      ...
  "typeinfo for std::__1::basic_istream<char, std::__1::char_traits<char> >", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "typeinfo for std::__1::basic_ostream<char, std::__1::char_traits<char> >", referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "typeinfo for std::__1::basic_iostream<char, std::__1::char_traits<char> >", referenced from:
      construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      typeinfo for std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "typeinfo for std::__1::basic_streambuf<char, std::__1::char_traits<char> >", referenced from:
      typeinfo for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "typeinfo for std::runtime_error", referenced from:
      reactphysics3d::HalfEdgeStructure::init() in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      ...
  "vtable for __cxxabiv1::__class_type_info", referenced from:
      typeinfo for reactphysics3d::DynamicAABBTreeOverlapCallback in test-db2b03.o
      typeinfo for reactphysics3d::Joint in test-db2b03.o
      typeinfo for reactphysics3d::Joint in libreactphysics3d.a(FixedJoint.cpp.o)
      typeinfo for reactphysics3d::Joint in libreactphysics3d.a(HingeJoint.cpp.o)
      typeinfo for reactphysics3d::Joint in libreactphysics3d.a(SliderJoint.cpp.o)
      typeinfo for reactphysics3d::Joint in libreactphysics3d.a(BallAndSocketJoint.cpp.o)
      typeinfo for reactphysics3d::CollisionShape in libreactphysics3d.a(CollisionShape.cpp.o)
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for reactphysics3d::ConvexShape in test-db2b03.o
      typeinfo for reactphysics3d::ConvexPolyhedronShape in test-db2b03.o
      typeinfo for reactphysics3d::BoxShape in test-db2b03.o
      typeinfo for reactphysics3d::SphereShape in test-db2b03.o
      typeinfo for reactphysics3d::CapsuleShape in test-db2b03.o
      typeinfo for reactphysics3d::TriangleShape in test-db2b03.o
      typeinfo for reactphysics3d::ConcaveShape in test-db2b03.o
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "non-virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
      construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "non-virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
      construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
      construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
      construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "operator delete[](void*)", referenced from:
      reactphysics3d::TriangleVertexArray::~TriangleVertexArray() in libreactphysics3d.a(TriangleVertexArray.cpp.o)
      reactphysics3d::TriangleVertexArray::~TriangleVertexArray() in libreactphysics3d.a(TriangleVertexArray.cpp.o)
  "operator delete(void*)", referenced from:
      _main in test-db2b03.o
      reactphysics3d::BoxShape::~BoxShape() in test-db2b03.o
      reactphysics3d::SphereShape::~SphereShape() in test-db2b03.o
      reactphysics3d::CapsuleShape::~CapsuleShape() in test-db2b03.o
      reactphysics3d::TriangleShape::~TriangleShape() in test-db2b03.o
      reactphysics3d::ConvexTriangleAABBOverlapCallback::~ConvexTriangleAABBOverlapCallback() in test-db2b03.o
      reactphysics3d::BallAndSocketJoint::~BallAndSocketJoint() in test-db2b03.o
      ...
  "operator new[](unsigned long)", referenced from:
      reactphysics3d::TriangleVertexArray::computeVerticesNormals() in libreactphysics3d.a(TriangleVertexArray.cpp.o)
  "operator new(unsigned long)", referenced from:
      _main in test-db2b03.o
      std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str() const in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
  "___cxa_allocate_exception", referenced from:
      reactphysics3d::HalfEdgeStructure::init() in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      ...
  "___cxa_begin_catch", referenced from:
      ___clang_call_terminate in test-db2b03.o
      ___clang_call_terminate in libreactphysics3d.a(TriangleShape.cpp.o)
      ___clang_call_terminate in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int) in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      reactphysics3d::HalfEdgeStructure::Face* std::__1::uninitialized_copy<reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*>(reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*) in libreactphysics3d.a(BoxShape.cpp.o)
      ___clang_call_terminate in libreactphysics3d.a(BoxShape.cpp.o)
      ...
  "___cxa_end_catch", referenced from:
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int) in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libreactphysics3d.a(ConcaveMeshShape.cpp.o)
      reactphysics3d::HalfEdgeStructure::Face* std::__1::uninitialized_copy<reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*>(reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*) in libreactphysics3d.a(BoxShape.cpp.o)
  "___cxa_free_exception", referenced from:
      reactphysics3d::HalfEdgeStructure::init() in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      ...
  "___cxa_pure_virtual", referenced from:
      vtable for reactphysics3d::ConvexShape in test-db2b03.o
      vtable for reactphysics3d::ConvexPolyhedronShape in test-db2b03.o
      vtable for reactphysics3d::ConcaveShape in test-db2b03.o
      vtable for reactphysics3d::CollisionShape in libreactphysics3d.a(CollisionShape.cpp.o)
      vtable for reactphysics3d::ConvexShape in libreactphysics3d.a(ConvexShape.cpp.o)
      vtable for reactphysics3d::ConcaveShape in libreactphysics3d.a(ConcaveShape.cpp.o)
      vtable for reactphysics3d::ConvexPolyhedronShape in libreactphysics3d.a(ConvexPolyhedronShape.cpp.o)
      ...
  "___cxa_rethrow", referenced from:
      reactphysics3d::HalfEdgeStructure::Face* std::__1::uninitialized_copy<reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*>(reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*, reactphysics3d::HalfEdgeStructure::Face*) in libreactphysics3d.a(BoxShape.cpp.o)
  "___cxa_throw", referenced from:
      reactphysics3d::HalfEdgeStructure::init() in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::HalfEdgeStructure::Edge> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::add(reactphysics3d::Pair<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int> const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> >::add(reactphysics3d::Pair<unsigned int, reactphysics3d::Pair<unsigned int, unsigned int> > const&, bool) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, unsigned int>::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      reactphysics3d::Map<reactphysics3d::Pair<unsigned int, unsigned int>, reactphysics3d::Pair<unsigned int, unsigned int> >::operator[](reactphysics3d::Pair<unsigned int, unsigned int> const&) in libreactphysics3d.a(HalfEdgeStructure.cpp.o)
      ...
  "___gxx_personality_v0", referenced from:
      _main in test-db2b03.o
      reactphysics3d::BoxShape::to_string() const in test-db2b03.o
      reactphysics3d::SphereShape::to_string() const in test-db2b03.o
      reactphysics3d::CapsuleShape::to_string() const in test-db2b03.o
      reactphysics3d::TriangleShape::to_string() const in test-db2b03.o
      reactphysics3d::BallAndSocketJoint::to_string() const in test-db2b03.o
      reactphysics3d::SliderJoint::to_string() const in test-db2b03.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Мне очень неудобно компилировать проект c / c ++ с помощью компилятора gcc / g ++.Не могли бы вы помочь мне разобраться в проблеме?Спасибо.

1 Ответ

1 голос
/ 20 мая 2019

В вашей командной строке есть две ошибки:

gcc -std=c++11 -Ireactphysics3d/src -Llib -lreactphysics3d -o myapp test.cpp ./lib/libreactphysics3d.a

, одна из которых отвечает за все неопределенные ссылочные ошибки связывания, которые вы фактически опубликовали (хотя, возможно, не ответственна за другие ошибки связывания, которые мы не видим).

Эта ошибка состоит в том, что вы пытаетесь связать приложение, содержащее скомпилированный C ++, с использованием внешнего интерфейса GCC C (gcc) вместо внешнего интерфейса C ++ (g++).

СкомпилированоC ++ обычно делает ссылки на символы, которые определены в стандартной библиотеке C ++.Ваш делает так.Таким образом, ваша программа должна быть связана со стандартной библиотекой C ++.g++ автоматически добавляет в связь стандартную библиотеку C и стандартную библиотеку C ++.gcc добавляет только стандартную библиотеку C.В этом разница между двумя интерфейсами.Таким образом, ваша связь завершается ошибкой, потому что ссылки на символы, определенные стандартной библиотекой C ++, не разрешаются.Чтобы это исправить, замените gcc на g++ в командной строке.

Другая ошибка - хотя в данном случае она безвредна - это то, что командная строка:

g++ -std=c++11 -Ireactphysics3d/src -Llib -lreactphysics3d -o myapp test.cpp

будетпример Ваша связь использует библиотеки перед объектными файлами, которые ссылаются на них , что является еще одной обычной причиной сбоев связи для неопределенных ссылок.

Библиотеки должны появляться в последовательности связи после файлов, которые зависят от них.

Единственная причина, по которой ваша связь не выдает дополнительных неопределенных ошибок ссылок на этот счет, состоит в том, что в вашей фактической командной строке, поместив -lreactphysics3d первым в последовательности связей, где она не имеет никакого эффекта, затем вы снова добавляете ту же библиотеку в последовательность связей по имени - ./lib/libreactphysics3d.a - после файла, который зависит от него, где он является эффективным.Чтобы избавиться от этой избыточности, используйте либо более обычный:

g++ -std=c++11 -Ireactphysics3d/src -o myapp test.cpp -Llib -lreactphysics3d

или менее обычный:

g++ -std=c++11 -Ireactphysics3d/src -o myapp test.cpp ./lib/libreactphysics3d.a
...