the_Kid26
the_Kid26

Reputation: 59

Linker errors with library that I know is in the project

So I'm working with the 3dar SDK, and I had no problem building a standalone application that implemented the sdk and the resulting SM3Dar.h header. But now that I'm trying to use the same sdk as part of a larger project it doesn't seem to be functioning correctly. It seems like it knows the header file is in there but is not communicating correctly with that and the library. I'm trying to run it on an iPhone 5, and I have the latest XCode.

But I receive these errors

Undefined symbols for architecture armv7s:
  "**___cxa_pure_virtual", referenced from**:
      vtable for Comparable in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
  "**vtable for __cxxabiv1::__si_class_type_info", referenced from:**
      typeinfo for ComboVertex in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      typeinfo for ObjDB in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(ObjDB.o)
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  **"operator new[](unsigned long)", referenced from:**
      Array<FloatPolygon>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatVertex>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<CString>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(ObjFile.o)
      Array<Vector3>::resize(int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      Array<Vector3>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      Array<unsigned char>::resize(int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      Array<unsigned char>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      ...
  **"std::terminate()", referenced from:**
      +[Geometry newOBJFromResource:] in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      FloatObject::~FloatObject() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatPolygon>::~Array() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      FloatObject::FloatObject() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatPolygon>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      read_obj(GeometryInterface*, char const*) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(ObjFile.o)
      Array<CString>::~Array() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(ObjFile.o)
      ...
  **"operator delete[](void*)", referenced from:**
      RunningAverage<Vector3>::~RunningAverage() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(CoordinateSystemAPI.o)
      Array<FloatVertex>::~Array() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatPolygon>::~Array() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatPolygon>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatVertex>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<CString>::~Array() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(ObjFile.o)
      Array<CString>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(ObjFile.o)
      ...
  **"vtable for __cxxabiv1::__class_type_info", referenced from:**
      typeinfo for Comparable in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      typeinfo for GeometryInterface in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(GeometryInterface.o)
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  ****"___cxa_guard_abort", referenced from:****
      Vector2::zero() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      Vector3::zero() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
  **"___gxx_personality_sj0", referenced from:**
      +[Geometry newOBJFromResource:] in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      FloatObject::~FloatObject() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatPolygon>::~Array() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      FloatObject::FloatObject() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatPolygon>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      Array<FloatVertex>::Array(int, int) in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      +[SM3DARSession sharedInstance] in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(SM3DARSession.o)
      ...
  **"___cxa_guard_acquire", referenced from:**
      Vector2::zero() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      Vector3::zero() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
  "___cxa_guard_release", referenced from:
      Vector2::zero() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
      Vector3::zero() in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(FloatObject.o)
  "std::ios_base::Init::~Init()", referenced from:
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(SM3DARController.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(SM3DARPointOfInterest.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(CoordinateSystemAPI.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Matrix4.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Matrix3.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(SM3DARPointView.o)
      ...
  "std::ios_base::Init::Init()", referenced from:
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(SM3DARController.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(SM3DARPointOfInterest.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(CoordinateSystemAPI.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Geometry.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Matrix4.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(Matrix3.o)
      ___cxx_global_var_init in lib3DAR_v23_2012_12_06_DistributionPatch_2013_05_18.a(SM3DARPointView.o)
      ...
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Upvotes: 2

Views: 2785

Answers (2)

Ahmed Mohammed
Ahmed Mohammed

Reputation: 1154

I believe the library was built for only armv7 not armv7s. To confirm that this is the problem, configure your project to build for armv7 only in the project build settings and see if that works. If that is the case, your options are to either get an updated version of the library or to build your code for armv7 only.

Upvotes: 0

Related Questions