iOS Question Error with B4i Library

walterf25

Expert
Licensed User
Longtime User
Hi all, I started wrapping a library, in xcode everything compiles fine, I have generated the xml library file, copied the xml file into the Additional_Libs folder, the library wrapper only has one function as of now, but when i try to compile my app I get the following error


Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_MPPPoseLandmarker", referenced from:
in libiPoseLandmarker.a[2](iPoseLandmarker.o)
"_OBJC_CLASS_$_MPPPoseLandmarkerOptions", referenced from:
in libiPoseLandmarker.a[2](iPoseLandmarker.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

The libiPoseLandmarker.a file has been copied to the Libs folder of my local B4iBuildServer along with the MediaPipeTasksVision.framework which is required by this library, Not sure what the error means exactly, hoping someone here with more experience can help me figure this out.

Thanks everyone in advance.

Walter
 

walterf25

Expert
Licensed User
Longtime User
Copying the library isn't enough. Add to your project:
B4X:
#AdditionalLib: iPoseLandmarker.a.3
#AdditionalLib: MediaPipeTasksVision.framework.3

If it works then you can add it to the XML file with:
B4X:
//~dependson: FirebaseAnalytics.framework.3
In the header file.
Hi @Erel I just tried adding
B4X:
#AdditionalLib: iPoseLandmarker.a.3

But I get the following error, I can see that library in the Lib folder of the B4iBuildServer, but not sure why I get this error

ld: library 'iPoseLandmarker.a.3' not found
Any thoughts?
 
Upvote 0

walterf25

Expert
Licensed User
Longtime User
Try:
B4X:
#AdditionalLib: iPoseLandmarker
Hi Erel, just tried that and now I get the following errors.

Ld /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload/tros.ai.app/tros.ai normal (in target 'B4iProject' from project 'B4iProject')
cd /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target arm64-apple-ios15.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk -L/Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/build/EagerLinkingTBDs -L/Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload -L../../Libs -F/Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/build/EagerLinkingTBDs -F/Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload -F../../Libs -filelist /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/tros.ai.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -object_path_lto -Xlinker /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/tros.ai_lto.o -Xlinker -no_deduplicate -fobjc-arc -fobjc-link-runtime -ObjC -lCore -framework Foundation -framework CoreGraphics -framework UIKit -liDateUtils -liFirebaseAnalytics -liFirebaseAuth -liHUD -liJSON -liMedia -liNetwork -liPhone -liPoseLandmarker -liSQL -liWebSocket -liFLAnimatedImage -framework AVFoundation -framework FirebaseAnalytics -framework FirebaseCore -framework FirebaseCoreDiagnostics -framework FirebaseInstallations -framework GoogleAppMeasurementIdentitySupport -framework GoogleAppMeasurement -framework GoogleDataTransport -framework GoogleUtilities -framework PromisesObjC -framework nanopb -framework AddressBook -framework SystemConfiguration -framework SafariServices -framework GoogleSignIn -framework GTMSessionFetcher -framework FirebaseAuth -framework AppAuth -framework GTMAppAuth -framework MessageUI -framework CoreMotion -framework MediaPipeTasksVision -framework MediaPipeTasksCommon -lsqlite3 -licucore -framework CFNetwork -framework Security -liXUI -liBitmapCreator -liHttp -liStringUtils -liRandomAccessFile -lxCustomListView -lz -framework MediaPipeTasksVision -framework MediaPipeTasksCommon -liDebug2 -Xlinker -no_adhoc_codesign -Xlinker -dependency_info -Xlinker /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/arm64/tros.ai_dependency_info.dat -o /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload/tros.ai.app/tros.ai
ld: warning: Could not find or use auto-linked framework 'CoreAudioTypes'
ld: warning: Could not find or use auto-linked framework 'Symbols'
Undefined symbols for architecture arm64:
"mediapipe::RenderAnnotation* google::protobuf::Arena::CreateMaybeMessage<mediapipe::RenderAnnotation>(google::protobuf::Arena*)", referenced from:
-[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::RenderAnnotation_Point* google::protobuf::Arena::CreateMaybeMessage<mediapipe::RenderAnnotation_Point>(google::protobuf::Arena*)", referenced from:
-[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::RenderAnnotation_Scribble* google::protobuf::Arena::CreateMaybeMessage<mediapipe::RenderAnnotation_Scribble>(google::protobuf::Arena*)", referenced from:
-[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::Color* google::protobuf::Arena::CreateMaybeMessage<mediapipe::Color>(google::protobuf::Arena*)", referenced from:
-[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::tasks::components::processors::proto::EmbedderOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::components::processors::proto::EmbedderOptions>(google::protobuf::Arena*)", referenced from:
-[MPPImageEmbedderOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageEmbedderOptions+Helpers.o)
"mediapipe::tasks::components::processors::proto::ClassifierOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::components::processors::proto::ClassifierOptions>(google::protobuf::Arena*)", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
-[MPPImageClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageClassifierOptions+Helpers.o)
"mediapipe::tasks::vision::face_detector::proto::FaceDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::face_detector::proto::FaceDetectorGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::hand_detector::proto::HandDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::hand_detector::proto::HandDetectorGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
-[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPHandLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::pose_detector::proto::poseDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::pose_detector::proto::poseDetectorGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPPoseLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::face_landmarker::proto::FaceLandmarksDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::face_landmarker::proto::FaceLandmarksDetectorGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarkerGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarkerGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarksDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarksDetectorGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
-[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPHandLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::pose_landmarker::proto::poseLandmarksDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::pose_landmarker::proto::poseLandmarksDetectorGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPPoseLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::gesture_recognizer::proto::GestureClassifierGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::gesture_recognizer::proto::GestureClassifierGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"mediapipe::tasks::vision::gesture_recognizer::proto::HandGestureRecognizerGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::gesture_recognizer::proto::HandGestureRecognizerGraphOptions>(google::protobuf::Arena*)", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"mediapipe::RenderData::InternalSwap(mediapipe::RenderData*)", referenced from:
mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::RenderData::CopyFrom(mediapipe::RenderData const&)", referenced from:
mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::RenderData::RenderData(google::protobuf::Arena*, bool)", referenced from:
mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::RenderData>::Make() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision(MPPVisionPacketCreator.o)
std::__1::unique_ptr<mediapipe::packet_internal::HolderBase, std::__1::default_delete<mediapipe::packet_internal::HolderBase> > mediapipe::packet_internal::CreateMessageHolder<mediapipe::RenderData>() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
-[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::RenderData::~RenderData()", referenced from:
+[MPPVisionPacketCreator createRenderDataPacketWithRegionOfInterest:error:] in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::RenderData>::Make() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::packet_internal::Holder<mediapipe::RenderData>::~Holder() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
-[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::NormalizedRect::InternalSwap(mediapipe::NormalizedRect*)", referenced from:
mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision(MPPVisionTaskRunner.o)
"mediapipe::NormalizedRect::CopyFrom(mediapipe::NormalizedRect const&)", referenced from:
mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision(MPPVisionTaskRunner.o)
"mediapipe::NormalizedRect::NormalizedRect(google::protobuf::Arena*, bool)", referenced from:
mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::NormalizedRect>::Make() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision(MPPVisionPacketCreator.o)
std::__1::unique_ptr<mediapipe::packet_internal::HolderBase, std::__1::default_delete<mediapipe::packet_internal::HolderBase> > mediapipe::packet_internal::CreateMessageHolder<mediapipe::NormalizedRect>() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
-[MPPVisionTaskRunner normalizedRectWithRegionOfInterest:imageSize:imageOrientation:error:] in MediaPipeTasksVision(MPPVisionTaskRunner.o)
mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision(MPPVisionTaskRunner.o)
"mediapipe::NormalizedRect::~NormalizedRect()", referenced from:
mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::NormalizedRect>::Make() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
mediapipe::packet_internal::Holder<mediapipe::NormalizedRect>::~Holder() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
-[MPPVisionTaskRunner normalizedRectWithRegionOfInterest:imageSize:imageOrientation:error:] in MediaPipeTasksVision(MPPVisionTaskRunner.o)
-[MPPVisionTaskRunner inputPacketMapWithMPPImage:regionOfInterest:error:] in MediaPipeTasksVision(MPPVisionTaskRunner.o)
-[MPPVisionTaskRunner inputPacketMapWithMPPImage:regionOfInterest:timestampInMilliseconds:error:] in MediaPipeTasksVision(MPPVisionTaskRunner.o)
"mediapipe::RenderAnnotation::clear_data()", referenced from:
-[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision(MPPRegionOfInterest+Helpers.o)
"mediapipe::_MatrixData_default_instance_", referenced from:
+[MPPFaceLandmarkerResult(Helpers) faceLandmarkerResultWithLandmarksPacket:blendshapesPacket:transformationMatrixesPacket:] in MediaPipeTasksVision(MPPFaceLandmarkerResult+Helpers.o)
"mediapipe::_LocationData_default_instance_", referenced from:
+[MPPDetection(Helpers) detectionWithProto:] in MediaPipeTasksVision(MPPDetection+Helpers.o)
"mediapipe::tasks::components::processors::proto::EmbedderOptions::Clear()", referenced from:
-[MPPImageEmbedderOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageEmbedderOptions+Helpers.o)
"mediapipe::tasks::components::processors::proto::ClassifierOptions::Clear()", referenced from:
-[MPPClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPClassifierOptions+Helpers.o)
-[MPPImageClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageClassifierOptions+Helpers.o)
"mediapipe::tasks::TensorsToSegmentationCalculatorOptions::ext", referenced from:
+[MPPInteractiveSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision(MPPInteractiveSegmenter.o)
+[MPPImageSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision(MPPImageSegmenter.o)
"mediapipe::tasks::TensorsToSegmentationCalculatorOptions::TensorsToSegmentationCalculatorOptions(mediapipe::tasks::TensorsToSegmentationCalculatorOptions const&)", referenced from:
+[MPPInteractiveSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision(MPPInteractiveSegmenter.o)
+[MPPImageSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision(MPPImageSegmenter.o)
"mediapipe::tasks::TensorsToSegmentationCalculatorOptions::~TensorsToSegmentationCalculatorOptions()", referenced from:
+[MPPInteractiveSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision(MPPInteractiveSegmenter.o)
+[MPPImageSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision(MPPImageSegmenter.o)
"mediapipe::tasks::vision::face_detector::proto::FaceDetectorGraphOptions::ext", referenced from:
-[MPPFaceDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceDetectorOptions+Helpers.o)
"mediapipe::tasks::vision::face_detector::proto::FaceDetectorGraphOptions::Clear()", referenced from:
-[MPPFaceDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceDetectorOptions+Helpers.o)
"mediapipe::tasks::vision::face_detector::proto::_FaceDetectorGraphOptions_default_instance_", referenced from:
-[MPPFaceDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceDetectorOptions+Helpers.o)
"mediapipe::tasks::vision::face_stylizer::proto::FaceStylizerGraphOptions::ext", referenced from:
-[MPPFaceStylizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceStylizerOptions+Helpers.o)
"mediapipe::tasks::vision::face_stylizer::proto::FaceStylizerGraphOptions::Clear()", referenced from:
-[MPPFaceStylizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceStylizerOptions+Helpers.o)
"mediapipe::tasks::vision::face_stylizer::proto::_FaceStylizerGraphOptions_default_instance_", referenced from:
-[MPPFaceStylizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceStylizerOptions+Helpers.o)
"mediapipe::tasks::vision::hand_detector::proto::HandDetectorGraphOptions::Clear()", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"mediapipe::tasks::vision::image_embedder::proto::ImageEmbedderGraphOptions::ext", referenced from:
-[MPPImageEmbedderOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageEmbedderOptions+Helpers.o)
"mediapipe::tasks::vision::image_embedder::proto::_ImageEmbedderGraphOptions_default_instance_", referenced from:
-[MPPImageEmbedderOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageEmbedderOptions+Helpers.o)
"mediapipe::tasks::vision::face_landmarker::proto::FaceLandmarkerGraphOptions::ext", referenced from:
-[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::face_landmarker::proto::FaceLandmarkerGraphOptions::Clear()", referenced from:
-[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::face_landmarker::proto::_FaceLandmarkerGraphOptions_default_instance_", referenced from:
-[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPFaceLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarkerGraphOptions::ext", referenced from:
-[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPHandLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarkerGraphOptions::Clear()", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
-[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPHandLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarksDetectorGraphOptions::Clear()", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"mediapipe::tasks::vision::hand_landmarker::proto::_HandLandmarkerGraphOptions_default_instance_", referenced from:
-[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPHandLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::image_segmenter::proto::ImageSegmenterGraphOptions::ext", referenced from:
-[MPPImageSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageSegmenterOptions+Helpers.o)
-[MPPInteractiveSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPInteractiveSegmenterOptions+Helpers.o)
"mediapipe::tasks::vision::image_segmenter::proto::ImageSegmenterGraphOptions::Clear()", referenced from:
-[MPPImageSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageSegmenterOptions+Helpers.o)
-[MPPInteractiveSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPInteractiveSegmenterOptions+Helpers.o)
"mediapipe::tasks::vision::image_segmenter::proto::_ImageSegmenterGraphOptions_default_instance_", referenced from:
-[MPPImageSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageSegmenterOptions+Helpers.o)
-[MPPInteractiveSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPInteractiveSegmenterOptions+Helpers.o)
"mediapipe::tasks::vision::eek:bject_detector::proto::ObjectDetectorOptions::ext", referenced from:
-[MPPObjectDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPObjectDetectorOptions+Helpers.o)
"mediapipe::tasks::vision::eek:bject_detector::proto::ObjectDetectorOptions::Clear()", referenced from:
-[MPPObjectDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPObjectDetectorOptions+Helpers.o)
"mediapipe::tasks::vision::eek:bject_detector::proto::_ObjectDetectorOptions_default_instance_", referenced from:
-[MPPObjectDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPObjectDetectorOptions+Helpers.o)
"mediapipe::tasks::vision::pose_landmarker::proto::poseLandmarkerGraphOptions::ext", referenced from:
-[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPPoseLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::pose_landmarker::proto::poseLandmarkerGraphOptions::Clear()", referenced from:
-[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPPoseLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::pose_landmarker::proto::_PoseLandmarkerGraphOptions_default_instance_", referenced from:
-[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPPoseLandmarkerOptions+Helpers.o)
"mediapipe::tasks::vision::image_classifier::proto::ImageClassifierGraphOptions::ext", referenced from:
-[MPPImageClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageClassifierOptions+Helpers.o)
"mediapipe::tasks::vision::image_classifier::proto::_ImageClassifierGraphOptions_default_instance_", referenced from:
-[MPPImageClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPImageClassifierOptions+Helpers.o)
"mediapipe::tasks::vision::gesture_recognizer::proto::GestureClassifierGraphOptions::Clear()", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"mediapipe::tasks::vision::gesture_recognizer::proto::GestureRecognizerGraphOptions::ext", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"mediapipe::tasks::vision::gesture_recognizer::proto::GestureRecognizerGraphOptions::Clear()", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"mediapipe::tasks::vision::gesture_recognizer::proto::_GestureRecognizerGraphOptions_default_instance_", referenced from:
-[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision(MPPGestureRecognizerOptions+Helpers.o)
"typeinfo for mediapipe::RenderData", referenced from:
std::type_info const& mediapipe::TypeId::GetTypeInfo<mediapipe::RenderData>() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
"typeinfo for mediapipe::NormalizedRect", referenced from:
std::type_info const& mediapipe::TypeId::GetTypeInfo<mediapipe::NormalizedRect>() in MediaPipeTasksVision(MPPVisionPacketCreator.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

ProcessInfoPlistFile /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload/tros.ai.app/Info.plist /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/B4iProject/B4iProject-Info.plist (in target 'B4iProject' from project 'B4iProject')
cd /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>
builtin-infoPlistUtility /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/B4iProject/B4iProject-Info.plist -producttype com.apple.product-type.application -genpkginfo /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload/tros.ai.app/PkgInfo -expandbuildsettings -format binary -platform iphoneos -additionalcontentfile /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/LaunchScreen-SBPartialInfo.plist -additionalcontentfile /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/assetcatalog_generated_info.plist -requiredArchitecture arm64 -o /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload/tros.ai.app/Info.plist
/Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/B4iProject.xcodeproj: warning: User-supplied CFBundleIdentifier value '<user id>.strom.ergo' in the Info.plist must be the same as the PRODUCT_BUNDLE_IDENTIFIER build setting value ''. (in target 'B4iProject' from project 'B4iProject')


Error: ** BUILD FAILED **

I have been burning the candle at both ends for almost a week now and can't seem to get this to work, I know you're a busy person but will really appreciate it if I could get some more tips here, I have also created a job post but unfortunately have not gotten any responses, I realize wrapping B4i libraries is a bit more cumbersome than Android libs, I need to get this working or I will loose a client, I really thought it wouldn't be too difficult to wrap this library since I already wrapped the Android one.

Thanks Erel, and anyone else who may have some more insight about why I get the errors I am getting.

Walter
 
Upvote 0

walterf25

Expert
Licensed User
Longtime User
I think that you are missing protobuf. Check the library documentation. The dependencies should be listed there.
Just built the ProtocolBuffers library and added it to the Libs folder of my local builder but I still see the same errors.

This is very frustrating.
 
Upvote 0

walterf25

Expert
Licensed User
Longtime User
Building iOS libraries is indeed not simple. Create a new empty project with Xcode and add this framework. Get it running as an app first.
Hi Erel and thanks for enganging with me and helping me while we try to figure this out, I now see the following error, and not sure what it really means, but I feel that I'm a bit closer.

CodeSign /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload/tros.ai.app (in target 'B4iProject' from project 'B4iProject')
cd /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>

Signing Identity: "iPhone Distribution: STROM Ergonomics Corp (AWVAT7W3HZ)"
Provisioning Profile: "stromergo"
(156f5c9b-cad7-4534-b5b2-c50732acc03d)

/usr/bin/codesign --force --sign 6BCF4BF9BEED62D6BCB72757C8807A34B7FE4AB0 --keychain <user id> --entitlements /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/tros.ai.app.xcent --timestamp\=none --generate-entitlement-der /Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload/tros.ai.app
/Users/walterflores/Documents/B4iBuildServer/UploadedProjects/<user id>/Payload/tros.ai.app: resource fork, Finder information, or similar detritus not allowed
Command CodeSign failed with a nonzero exit code


Error: ** BUILD FAILED **

Any idea on what this error means?
 
Upvote 0

walterf25

Expert
Licensed User
Longtime User
Building iOS libraries is indeed not simple. Create a new empty project with Xcode and add this framework. Get it running as an app first.
Quick update, I was finally able to compile and run the b4i project with the wrapped library, however when the app tries to be installed through B4i-Bridge, I get an error saying Unable to install app, try again later.

unnamed.jpg


Thinking that maybe the issue was the new library wrapper, I unchecked it from the libraries tab in the IDE, removed any reference to the library and tried to compile the b4i project, but even so I am receiving the same error, This used to compile just fine on my local build server, now for some reason it doesn't, I tried compiling with the hosted build server and it compiles fine without any issues, would this be a direct issue with my local build server? if so how can i fix it? I am on Build Server version 8.1. and using xcode 14.2 on my mini-mac, and xcode 16.2 on my macbook pro, I have totally different problems trying to compile using xcode 16.2, but that's a different issue, for now I'd like to be able to compile my app with xcode 14.2.

Any idea why this is? I don't see any errors in the logs, or in the B4iBuildServer.

Thanks,
Walter
 
Last edited:
Upvote 0

walterf25

Expert
Licensed User
Longtime User
1. Try to change package name and see whether it makes any difference.
2. Try to compile an app with the hosted builder.
Hi Erel, I think i figured out the problem, the main issue was that the local builder was running from /MyDocuments directory which is being backed up by iCloud, so I moved it to /Users/xxxxxxx/MyLocalFiles, the other thing was that I hadn't installed the AppleConfigurator2, which is odd because I had been working without it for a while, I am now able to compile my app with the wrapped library even though for now it's only one function in it but at least I know it loads all the required dependencies.

I will post both Android and iOS libraries once I am done and my client agrees to it.

As always Thanks for all your help Erel, really appreciate your awesomeness....

Walter
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
iOS build chain is fragile. There are errors that only happen at runtime and some of them cause hard crashes with zero output. This is not something that you encounter with Java.

A useful method for such cases, is to build a release simulator app and then debug it with Xcode. It requires two steps to get the app running (I can explain if anyone is interested). You will sometimes get more information from Xcode.

This is not related to the last issue with B4i build server path.
 
Upvote 0

walterf25

Expert
Licensed User
Longtime User
iOS build chain is fragile. There are errors that only happen at runtime and some of them cause hard crashes with zero output. This is not something that you encounter with Java.

A useful method for such cases, is to build a release simulator app and then debug it with Xcode. It requires two steps to get the app running (I can explain if anyone is interested). You will sometimes get more information from Xcode.

This is not related to the last issue with B4i build server path.
I'm definitely interested in learning how to
debug a b4i app in xcode I think it will come
In handy.
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
 
Upvote 0
Top