mesibo / messenger-app-ios

Open Source Messenger App For iOS - Real-time Messaging, Voice and Video Calls
https://mesibo.com
107 stars 32 forks source link

XCode Version 12.5 (12E262) undefined symbols #18

Closed cnagy closed 3 years ago

cnagy commented 3 years ago

Followed the instructions, but I have undefined symbols for arm64:

$ mkdir Messenger $ cd Messenger $ git lfs install $ git clone https://github.com/mesibo/messenger-app-ios.git

Undefined symbols for architecture arm64: "_nw_path_monitor_cancel", referenced from: l49235 in WebRTC(arm64.o) "_nw_interface_get_name", referenced from: l49232 in WebRTC(arm64.o) "_nw_interface_get_type", referenced from: l49232 in WebRTC(arm64.o) "_nw_path_get_status", referenced from: l49231 in WebRTC(arm64.o) "_nw_path_monitor_create", referenced from: l49230 in WebRTC(arm64.o) "_nw_path_monitor_set_update_handler", referenced from: l49230 in WebRTC(arm64.o) "_nw_path_monitor_set_queue", referenced from: l49230 in WebRTC(arm64.o) "_kVTCompressionPropertyKey_AverageBitRate", referenced from: l6191 in WebRTC(arm64.o) "_kVTCompressionPropertyKey_ExpectedFrameRate", referenced from: l6191 in WebRTC(arm64.o) "_kVTCompressionPropertyKey_ProfileLevel", referenced from: l6187 in WebRTC(arm64.o) "_nw_path_enumerate_interfaces", referenced from: l49231 in WebRTC(arm64.o) "_kVTCompressionPropertyKey_AllowFrameReordering", referenced from: l6187 in WebRTC(arm64.o) "_VTCompressionSessionCreate", referenced from: l6185 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_AutoLevel", referenced from: l6171 in WebRTC(arm64.o) "_nw_path_monitor_start", referenced from: l49230 in WebRTC(arm64.o) "_VTSessionSetProperty", referenced from: l6150 in WebRTC(arm64.o) l6191 in WebRTC(arm64.o) l44640 in WebRTC(arm64.o) l44641 in WebRTC(arm64.o) l44642 in WebRTC(arm64.o) l44643 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_4_1", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_4_0", referenced from: l6171 in WebRTC(arm64.o) "_kVTCompressionPropertyKey_DataRateLimits", referenced from: l6191 in WebRTC(arm64.o) "_kVTCompressionPropertyKey_MaxKeyFrameInterval", referenced from: l6187 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_4_0", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_4_0", referenced from: l6171 in WebRTC(arm64.o) "_kVTCompressionPropertyKey_RealTime", referenced from: l6187 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_3_1", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_3_0", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_5_0", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_3_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_3_1", referenced from: l6171 in WebRTC(arm64.o) "_VTCompressionSessionEncodeFrame", referenced from: l6174 in WebRTC(arm64.o) "_check_session_description_compliance", referenced from: l54525 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_5_1", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_3_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_4_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_4_1", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_5_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration", referenced from: l6187 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_4_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_3_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_5_1", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_5_0", referenced from: l6171 in WebRTC(arm64.o) "_VTDecompressionSessionInvalidate", referenced from: l6151 in WebRTC(arm64.o) "_kVTDecompressionPropertyKey_RealTime", referenced from: l6150 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_5_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_5_1", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_High_5_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_AutoLevel", referenced from: l6171 in WebRTC(arm64.o) "_VTCompressionSessionGetPixelBufferPool", referenced from: l6185 in WebRTC(arm64.o) "_VTDecompressionSessionCreate", referenced from: l6148 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_AutoLevel", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_5_0", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_3_1", referenced from: l6171 in WebRTC(arm64.o) "_VTDecompressionSessionWaitForAsynchronousFrames", referenced from: l6151 in WebRTC(arm64.o) "_VTDecompressionSessionDecodeFrame", referenced from: l6164 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_4_2", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_4_1", referenced from: l6171 in WebRTC(arm64.o) "_VTCompressionSessionInvalidate", referenced from: l6188 in WebRTC(arm64.o) "_kVTEncodeFrameOptionKey_ForceKeyFrame", referenced from: l6174 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Main_3_0", referenced from: l6171 in WebRTC(arm64.o) "_kVTProfileLevel_H264_Baseline_3_0", referenced from: l6171 in WebRTC(arm64.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

mesibo commented 3 years ago

Your build appears to be missing the necessary frameworks, for example, some of the symbols are from network and video toolbox frameworks. However, it is strange because the messenger XCode project already includes those frameworks.

cnagy commented 3 years ago

I'm trying to include only the framework in my project, but I didn't found anywhere the required dependencies. Will try to solve the errors, by including them one-by-one from the Messenger app. Thanks for the reply.

cnagy commented 3 years ago

Ok, added all the main dependencies and all the errors are gone, except this one. Can you tell me from which framework is coming from?

Undefined symbols for architecture arm64: "_check_session_description_compliance", referenced from: l54525 in WebRTC(arm64.o)

om-ha commented 3 years ago

Can you please mention how you resolved this @cnagy?

We are able to run Mesibo on device but not on simulator. And we have followed Mesibo's guidance on initializing LFS.

We are using the latest version for messenger-app-ios and cloud-hosted Mesibo backend (not our self-hosted one)

We are getting this error building for iOS Simulator, but linking in object file built for iOS

ld: in /Users/macos_user/some_mesibo_project/Pods/mesibo/mesibo.framework/mesibo(libsom_mesibo_arm64.o), building for iOS Simulator, but linking in object file built for iOS, file ‘/Users/macos_user/some_mesibo_project/Pods/mesibo/mesibo.framework/mesibo’

In /Users/macos_user/some_mesibo_project/Pods/mesibo/mesibo.framework/mesibo(libsom_mesibo_arm64.o), building for iOS Simulator, but linking in object file built for iOS, file ‘/Users/macos_user/some_mesibo_project/Pods/mesibo/mesibo.framework/mesibo’
mesibo commented 3 years ago

Exclude arm64 from the simulator target. Go to build settings, add "Any iOS Simulator SDK" with value arm64 inside Excluded Architecture.

Refer - https://stackoverflow.com/questions/63607158/xcode-12-building-for-ios-simulator-but-linking-in-object-file-built-for-ios

om-ha commented 3 years ago

What worked is:

Thanks for the suggestion on excluding arm64 arch, we did try that but unfortunately it did not work.

To give you more context, we are testing on:

We already run terminal in Rosetta (with pod install and other commands) but this alone wasn't enough. We had to run Xcode through Rosetta mode.

om-ha commented 3 years ago

I believe this means you have to re-compile your frameworks considering the new Apple's M1 Architecture in MacBook Pro M1 2020 and others.

mesibo commented 3 years ago

Thank you for your suggestion. I will file an internal ticket to look into.

On a side note, video calls may not work on the simulator. You will have to use a real device.

om-ha commented 3 years ago

Hey Mesibo team,

Thanks for filing the internal ticket. And thanks for your note on video calls/conferencing.

om-ha commented 3 years ago

Hey @mesibo team,

Do we have any news regarding the internal ticket for Apple Silicon architecture? (Apple M1)

I believe this means you have to re-compile your frameworks considering the new Apple's M1 Architecture in MacBook Pro M1 2020 and others.

Also it's worth noting stable Xcode 13 release is officially out!

mesibo commented 3 years ago

It will take some time but it's on our list. In the meantime, we recommend updating the API and conferencing code if you are using it.

lihongyang108 commented 2 years ago

Ok, added all the main dependencies and all the errors are gone, except this one. Can you tell me from which framework is coming from?

Undefined symbols for architecture arm64: "_check_session_description_compliance", referenced from: l54525 in WebRTC(arm64.o)

Hi, have you solved this problem? Which library is missing?

lihongyang108 commented 2 years ago

Ok, added all the main dependencies and all the errors are gone, except this one. Can you tell me from which framework is coming from?

Undefined symbols for architecture arm64: "_check_session_description_compliance", referenced from: l54525 in WebRTC(arm64.o)

Hi, have you solved this problem? Which library is missing?

mesibo commented 2 years ago

_check_session_description_compliance is defined in the mesibo framework.

https://github.com/mesibo/mesiboframeworks/tree/master/mesibo.framework