Start a new topic

Non-public API usage iOS SDK 5.0

Non-public API usage iOS SDK 5.0


Hi,

We are trying to publish our app in the app store, and it is being rejected for the following reason:

Non-public API usage:


The app references non-public symbols in : _dsyrk_


 

The app only uses the frameworks set out in the SDK 5.0 iOS documentation and the code is from the setup guide with a little from the SDK examples app. It builds without any errors and runs on our test devices. App-scanner also returns all clear.

When we Archive the build to publish it, the following double warning is produced:


ld: warning: direct access in std::__1::__shared_ptr_pointer<ceres::OrderedGroups<double*>*, std::__1::default_delete<ceres::OrderedGroups<double*> >, std::__1::allocator<ceres::OrderedGroups<double*> > >::__get_deleter(std::type_info const&) const to global weak symbol typeinfo name for std::__1::default_delete<ceres::OrderedGroups<double*> > means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.

 

ld: warning: direct access in std::__1::__shared_ptr_pointer<ceres::OrderedGroups<double*>*, std::__1::default_delete<ceres::OrderedGroups<double*> >, std::__1::allocator<ceres::OrderedGroups<double*> > >::__get_deleter(std::type_info const&) const to global weak symbol typeinfo name for std::__1::default_delete<ceres::OrderedGroups<double*> > means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.


 

If I remove the Accelerate framework the following 6 errors are returned. It's a required framework so the errors are expected, but the errors do reference the non-public symbol _dsyrk_ that apple is complaining about and ceres that the archive warning references.

Undefined symbols for architecture arm64:


  "_dgels_", referenced from:

      ceres::internal::LAPACK::EstimateWorkSizeForQR(int, int) in WikitudeSDK(lapack.cc.o)

      ceres::internal::LAPACK::SolveInPlaceUsingQR(int, int, double const*, int, double*, double*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in WikitudeSDK(lapack.cc.o)

  "_dpotrf_", referenced from:

      ceres::internal::LAPACK::SolveInPlaceUsingCholesky(int, double const*, double*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in WikitudeSDK(lapack.cc.o)

  "_dpotrs_", referenced from:

      ceres::internal::LAPACK::SolveInPlaceUsingCholesky(int, double const*, double*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in WikitudeSDK(lapack.cc.o)

  "_dsyrk_", referenced from:

      ceres::internal::BLAS::SymmetricRankKUpdate(int, int, double const*, bool, double, double, double*) in WikitudeSDK(blas.cc.o)

  "_dgesvd_", referenced from:

      TooN::SVD<3, 3, double>::do_compute() in WikitudeSDK(StereoInitializer.o)

      TooN::SVD<-1, -1, double>::do_compute() in WikitudeSDK(StereoInitializer.o)

      TooN::SVD<4, 4, double>::do_compute() in WikitudeSDK(MapMaker.o)


ld: symbol(s) not found for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

 

 

Has anyone experienced this before, or does anyone know how to fix this?

 

Thank you in advance :)

Hi,

Please redownload the SDK from this location - this will fix your issue.

Greetings

Nicola

Wow, that was a quick response. Do I just need to replace the wikitude framework with the new one, or is there more to it?

Is there a fix for iOS apps built with the cvordova plugin?

Hi,

Are you working with our latest Cordova version which is available here. The mentioned issue should be fixed there.

Greetings

Nicola
Login or Signup to post a comment