xamarin / xamarin-macios

.NET for iOS, Mac Catalyst, macOS, and tvOS provide open-source bindings of the Apple SDKs for use with .NET managed languages such as C#
Other
2.45k stars 511 forks source link

_LinkNativeExecutable target fails running net6.0-ios for simulator and device with native reference, works with older Xamarin.iOS #13503

Closed rolfbjarne closed 2 years ago

rolfbjarne commented 2 years ago

From @tmarkovski on Sat, 04 Dec 2021 22:48:49 GMT

Description

I'm trying to run a basic dotnet new ios app with a native library linked. The build fails at target _LinkNativeExecutable with the error

ld: 17954 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

The same library works just fine with Xamarin.iOS target using stable VS for Mac. The same library, compiled for MacCatalyst target works well with net6.0-maccatalyst, identical code as ios.

My test projects are in this repo, which also includes the static libraries. https://github.com/trinsic-id/okapi/tree/test-ios/example

Running dotnet run in the IosApp should attempt to run the app for simulator and produce the above error. Running the other two projects (MacCatalystApp and XamarinIosApp) succeeds - the native library is linked correctly and invoked on app start.

The libraries only support x64 architectures, as I'm running intel mac. Check with lipo -info <library>.a

Reproduction Steps

Clone this repo at the specified branch

https://github.com/trinsic-id/okapi/tree/test-ios/example

Run dotnet run from the IosApp folder

Expected behavior

App should be run and static library linked correctly

Actual behavior

Linker error

ld: 17954 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Regression?

Yes. The same library works well with Xamarin.IOS target. See project under XamarionIosApp in the linked repo.

Known Workarounds

No response

Configuration

No response

Other information

No response

Copied from original issue dotnet/runtime#62410

rolfbjarne commented 2 years ago

From @dotnet-issue-labeler[bot] on Sat, 04 Dec 2021 22:48:52 GMT

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

rolfbjarne commented 2 years ago

From @filipnavara on Sun, 05 Dec 2021 03:00:42 GMT

Here's the full list of duplicate symbols from the example: https://gist.github.com/filipnavara/1068e43691ed2a07ffc8af6a16d29553

It looks like the library gets added twice with a different path:

  duplicate symbol '_$LT$core..str..lossy..Utf8Lossy$u20$as$u20$core..fmt..Display$GT$::fmt::h8242bb55f849c500' in:
      ../libokapi_sim.a(core-ff0c4f91f8248401.core.081c50fc-cgu.0.rcgu.o)
      /Users/filipnavara/Projects/okapi/example/libokapi_sim.a(core-ff0c4f91f8248401.core.081c50fc-cgu.0.rcgu.o)

That would possibly suggest a problem with the MSBuild scripts in Xamarin.IOS. Here's the MSBuild binlog: msbuild.binlog.zip

The interesting part seems to be this: image

and particularly this part:

Tool xcrun execution started with arguments: clang++ -force_load ../libokapi_sim.a -miphonesimulator-version-min=11.2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.0.sdk -arch x86_64 -L/usr/local/share/dotnet/packs/Microsoft.iOS.Runtime.iossimulator-x64/15.0.101-preview.10.251/runtimes/iossimulator-x64/native -lxamarin-dotnet-debug -L/usr/local/share/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64/6.0.0/runtimes/iossimulator-x64/native -lSystem.IO.Compression.Native -L/usr/local/share/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64/6.0.0/runtimes/iossimulator-x64/native -lSystem.Native -L/usr/local/share/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64/6.0.0/runtimes/iossimulator-x64/native -lSystem.Net.Security.Native -L/usr/local/share/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64/6.0.0/runtimes/iossimulator-x64/native -lSystem.Security.Cryptography.Native.Apple -L/usr/local/share/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64/6.0.0/runtimes/iossimulator-x64/native -lmono-component-debugger -L/usr/local/share/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64/6.0.0/runtimes/iossimulator-x64/native -lmono-component-diagnostics_tracing -L/usr/local/share/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64/6.0.0/runtimes/iossimulator-x64/native -lmono-component-hot_reload -L/usr/local/share/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64/6.0.0/runtimes/iossimulator-x64/native -lmonosgen-2.0 -force_load /Users/filipnavara/Projects/okapi/example/libokapi_sim.a /usr/local/share/dotnet/packs/Microsoft.iOS.Runtime.iossimulator-x64/15.0.101-preview.10.251/runtimes/iossimulator-x64/native/Microsoft.iOS.registrar.a -rpath @executable_path -framework Accelerate -framework Accounts -framework AddressBook -framework AddressBookUI -framework AdSupport -framework ARKit -framework AssetsLibrary -framework AudioToolbox -framework AVFoundation -framework AVKit -framework CallKit -framework CFNetwork -framework CloudKit -framework Contacts -framework ContactsUI -framework CoreAudioKit -framework CoreBluetooth -framework CoreData -framework CoreFoundation -framework CoreGraphics -framework CoreImage -framework CoreLocation -framework CoreMedia -framework CoreMIDI -framework CoreML -framework CoreMotion -framework CoreSpotlight -framework CoreTelephony -framework CoreText -framework CoreVideo -framework DeviceCheck -framework EventKit -framework EventKitUI -framework ExternalAccessory -framework FileProvider -framework FileProviderUI -framework Foundation -framework GameController -framework GameKit -framework GameplayKit -framework GLKit -framework HealthKit -framework HealthKitUI -framework HomeKit -framework iAd -framework IdentityLookup -framework ImageIO -framework Intents -framework IntentsUI -framework JavaScriptCore -framework LocalAuthentication -framework MapKit -framework MediaAccessibility -framework MediaPlayer -framework MediaToolbox -framework Messages -framework MessageUI -framework Metal -framework MetalKit -framework MetalPerformanceShaders -framework ModelIO -framework MultipeerConnectivity -framework NetworkExtension -framework NewsstandKit -framework NotificationCenter -framework OpenGLES -framework PassKit -framework PDFKit -framework Photos -framework PhotosUI -framework PushKit -framework QuartzCore -framework QuickLook -framework ReplayKit -framework SafariServices -framework SceneKit -framework Security -framework Social -framework Speech -framework SpriteKit -framework StoreKit -framework SystemConfiguration -framework Twitter -framework UIKit -framework UserNotifications -framework UserNotificationsUI -framework VideoSubscriberAccount -framework VideoToolbox -framework Vision -framework WatchConnectivity -framework WebKit -weak_framework Accessibility -weak_framework AdServices -weak_framework AppClip -weak_framework AppTrackingTransparency -weak_framework AuthenticationServices -weak_framework AutomaticAssessmentConfiguration -weak_framework BackgroundTasks -weak_framework BusinessChat -weak_framework CarPlay -weak_framework ClassKit -weak_framework CoreHaptics -weak_framework CoreLocationUI -weak_framework IdentityLookupUI -weak_framework LinkPresentation -weak_framework MetricKit -weak_framework MobileCoreServices -weak_framework NaturalLanguage -weak_framework NearbyInteraction -weak_framework Network -weak_framework OSLog -weak_framework PencilKit -weak_framework QuickLookThumbnailing -weak_framework ScreenTime -weak_framework SensorKit -weak_framework SoundAnalysis -weak_framework UniformTypeIdentifiers -weak_framework VisionKit -framework GSS -framework CFNetwork /Users/filipnavara/Projects/okapi/example/IosApp/obj/Debug/net6.0-ios/iossimulator-x64/nativelibraries/main.x86_64.o -o /Users/filipnavara/Projects/okapi/example/IosApp/obj/Debug/net6.0-ios/iossimulator-x64/nativelibraries/IosApp -lcompression -u_okapi_string_free -u_okapi_bytebuffer_free -u_didkey_generate -u_didkey_resolve -u_didcomm_pack -u_didcomm_unpack -u_didcomm_sign -u_didcomm_verify -u_ldproofs_create_proof -u_ldproofs_verify_proof -u_oberon_create_key -u_oberon_create_token -u_oberon_create_proof -u_oberon_verify_proof -u_oberon_blind_token -u_oberon_unblind_token -u_xamarin_CGPoint__VNNormalizedFaceBoundingBoxPointForLandmarkPoint_Vector2_CGRect_nuint_nuint_string -u_xamarin_CGPoint__VNImagePointForFaceLandmarkPoint_Vector2_CGRect_nuint_nuint_string -u_xamarin_release_managed_ref -u_xamarin_set_gchandle_with_flags_safe -u_xamarin_localized_string_format -u_xamarin_localized_string_format_1 -u_xamarin_localized_string_format_2 -u_xamarin_localized_string_format_3 -u_xamarin_localized_string_format_4 -u_xamarin_localized_string_format_5 -u_xamarin_localized_string_format_6 -u_xamarin_localized_string_format_7 -u_xamarin_localized_string_format_8 -u_xamarin_localized_string_format_9 -u_xamarin_init_nsthread -u_xamarin_os_log -u_UIApplicationMain -u_xamarin_switch_gchandle -u_xamarin_mono_object_retain -u_xamarin_find_protocol_wrapper_type -u_xamarin_log -u_xamarin_release_block_on_main_thread -u_xamarin_start_wwan -u_xamarin_get_block_descriptor -u_xamarin_simd__NMatrix4_objc_msgSend -u_xamarin_simd__NMatrix4_objc_msgSendSuper -u_xamarin_simd__NMatrix4_objc_msgSend_stret -u_xamarin_simd__NMatrix4_objc_msgSendSuper_stret -u_xamarin_simd__IntPtr_objc_msgSend_NMatrix4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_NMatrix4 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_NMatrix4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_NMatrix4 -u_xamarin_simd__NVector3_objc_msgSend -u_xamarin_simd__NVector3_objc_msgSendSuper -u_xamarin_simd__NVector3_objc_msgSend_stret -u_xamarin_simd__NVector3_objc_msgSendSuper_stret -u_xamarin_simd__NMatrix3_objc_msgSend -u_xamarin_simd__NMatrix3_objc_msgSendSuper -u_xamarin_simd__NMatrix3_objc_msgSend_stret -u_xamarin_simd__NMatrix3_objc_msgSendSuper_stret -u_xamarin_simd__CGPoint_objc_msgSend_NVector3_nint_CGSize -u_xamarin_simd__CGPoint_objc_msgSendSuper_NVector3_nint_CGSize -u_xamarin_simd__CGPoint_objc_msgSend_stret_NVector3_nint_CGSize -u_xamarin_simd__CGPoint_objc_msgSendSuper_stret_NVector3_nint_CGSize -u_xamarin_simd__NVector3_objc_msgSend_CGPoint_NMatrix4_nint_CGSize -u_xamarin_simd__NVector3_objc_msgSendSuper_CGPoint_NMatrix4_nint_CGSize -u_xamarin_simd__NVector3_objc_msgSend_stret_CGPoint_NMatrix4_nint_CGSize -u_xamarin_simd__NVector3_objc_msgSendSuper_stret_CGPoint_NMatrix4_nint_CGSize -u_xamarin_simd__NMatrix4_objc_msgSend_nint_CGSize_nfloat_nfloat -u_xamarin_simd__NMatrix4_objc_msgSendSuper_nint_CGSize_nfloat_nfloat -u_xamarin_simd__NMatrix4_objc_msgSend_stret_nint_CGSize_nfloat_nfloat -u_xamarin_simd__NMatrix4_objc_msgSendSuper_stret_nint_CGSize_nfloat_nfloat -u_xamarin_simd__NMatrix4_objc_msgSend_nint -u_xamarin_simd__NMatrix4_objc_msgSendSuper_nint -u_xamarin_simd__NMatrix4_objc_msgSend_stret_nint -u_xamarin_simd__NMatrix4_objc_msgSendSuper_stret_nint -u_xamarin_simd__IntPtr_objc_msgSend_NMatrix4_NVector3 -u_xamarin_simd__IntPtr_objc_msgSendSuper_NMatrix4_NVector3 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_NMatrix4_NVector3 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_NMatrix4_NVector3 -u_xamarin_simd__IntPtr_objc_msgSend_NVector3_NVector3_nint_nint -u_xamarin_simd__IntPtr_objc_msgSendSuper_NVector3_NVector3_nint_nint -u_xamarin_simd__NVector3_objc_msgSend_CGPoint_NMatrix4 -u_xamarin_simd__NVector3_objc_msgSendSuper_CGPoint_NMatrix4 -u_xamarin_simd__NVector3_objc_msgSend_stret_CGPoint_NMatrix4 -u_xamarin_simd__NVector3_objc_msgSendSuper_stret_CGPoint_NMatrix4 -u_xamarin_simd__void_objc_msgSend_NMatrix4 -u_xamarin_simd__void_objc_msgSendSuper_NMatrix4 -u_xamarin_simd__void_objc_msgSend_NMatrix4_NVector3_NVector3_IntPtr -u_xamarin_simd__void_objc_msgSendSuper_NMatrix4_NVector3_NVector3_IntPtr -u_xamarin_simd__void_objc_msgSend_NVector3_IntPtr -u_xamarin_simd__void_objc_msgSendSuper_NVector3_IntPtr -u_xamarin_simd__Vector2_objc_msgSend_IntPtr -u_xamarin_simd__Vector2_objc_msgSendSuper_IntPtr -u_xamarin_simd__Vector2_objc_msgSend_stret_IntPtr -u_xamarin_simd__Vector2_objc_msgSendSuper_stret_IntPtr -u_xamarin_simd__NMatrix4_objc_msgSend_IntPtr -u_xamarin_simd__NMatrix4_objc_msgSendSuper_IntPtr -u_xamarin_simd__NMatrix4_objc_msgSend_stret_IntPtr -u_xamarin_simd__NMatrix4_objc_msgSendSuper_stret_IntPtr -u_xamarin_simd__NMatrix4x3_objc_msgSend -u_xamarin_simd__NMatrix4x3_objc_msgSendSuper -u_xamarin_simd__NMatrix4x3_objc_msgSend_stret -u_xamarin_simd__NMatrix4x3_objc_msgSendSuper_stret -u_xamarin_IntPtr_objc_msgSend_IntPtr_exception -u_xamarin_IntPtr_objc_msgSendSuper_IntPtr_exception -u_xamarin_IntPtr_objc_msgSend_IntPtr_IntPtr_nuint_exception -u_xamarin_IntPtr_objc_msgSendSuper_IntPtr_IntPtr_nuint_exception -u_xamarin_IntPtr_objc_msgSend_IntPtr_nint_nint_nint_nuint_exception -u_xamarin_IntPtr_objc_msgSendSuper_IntPtr_nint_nint_nint_nuint_exception -u_xamarin_IntPtr_objc_msgSend_IntPtr_nuint_nint_nuint_exception -u_xamarin_IntPtr_objc_msgSendSuper_IntPtr_nuint_nint_nuint_exception -u_xamarin_simd__Vector2_objc_msgSend -u_xamarin_simd__Vector2_objc_msgSendSuper -u_xamarin_simd__Vector2_objc_msgSend_stret -u_xamarin_simd__Vector2_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_Vector2 -u_xamarin_simd__void_objc_msgSendSuper_Vector2 -u_xamarin_simd__Vector3_objc_msgSend -u_xamarin_simd__Vector3_objc_msgSendSuper -u_xamarin_simd__Vector3_objc_msgSend_stret -u_xamarin_simd__Vector3_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_Vector3 -u_xamarin_simd__void_objc_msgSendSuper_Vector3 -u_xamarin_simd__Matrix3_objc_msgSend -u_xamarin_simd__Matrix3_objc_msgSendSuper -u_xamarin_simd__Matrix3_objc_msgSend_stret -u_xamarin_simd__Matrix3_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_Matrix3 -u_xamarin_simd__void_objc_msgSendSuper_Matrix3 -u_xamarin_simd__void_objc_msgSend_NMatrix3 -u_xamarin_simd__void_objc_msgSendSuper_NMatrix3 -u_xamarin_simd__IntPtr_objc_msgSend_Vector2 -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2 -u_xamarin_simd__IntPtr_objc_msgSend_Vector3 -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3 -u_xamarin_simd__Vector2i_objc_msgSend -u_xamarin_simd__Vector2i_objc_msgSendSuper -u_xamarin_simd__Vector2i_objc_msgSend_stret -u_xamarin_simd__Vector2i_objc_msgSendSuper_stret -u_xamarin_simd__IntPtr_objc_msgSend_Vector2i_int_int_bool -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2i_int_int_bool -u_xamarin_simd__IntPtr_objc_msgSend_Vector2i_int_int_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2i_int_int_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector2i -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2i -u_xamarin_simd__IntPtr_objc_msgSend_float_Vector2_Vector2_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_float_Vector2_Vector2_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_float_Vector2_Vector2 -u_xamarin_simd__IntPtr_objc_msgSendSuper_float_Vector2_Vector2 -u_xamarin_simd__GKTriangle_objc_msgSend_nuint -u_xamarin_simd__GKTriangle_objc_msgSendSuper_nuint -u_xamarin_simd__GKTriangle_objc_msgSend_stret_nuint -u_xamarin_simd__GKTriangle_objc_msgSendSuper_stret_nuint -u_xamarin_simd__float_objc_msgSend_Vector2 -u_xamarin_simd__float_objc_msgSendSuper_Vector2 -u_xamarin_simd__void_objc_msgSend_Vector3d -u_xamarin_simd__void_objc_msgSendSuper_Vector3d -u_xamarin_simd__Vector2d_objc_msgSend -u_xamarin_simd__Vector2d_objc_msgSendSuper -u_xamarin_simd__Vector2d_objc_msgSend_stret -u_xamarin_simd__Vector2d_objc_msgSendSuper_stret -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Vector2d_Vector2d_Vector2i_bool -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Vector2d_Vector2d_Vector2i_bool -u_xamarin_simd__float_objc_msgSend_Vector2i -u_xamarin_simd__float_objc_msgSendSuper_Vector2i -u_xamarin_simd__void_objc_msgSend_float_Vector2i -u_xamarin_simd__void_objc_msgSendSuper_float_Vector2i -u_xamarin_simd__GKBox_objc_msgSend -u_xamarin_simd__GKBox_objc_msgSendSuper -u_xamarin_simd__GKBox_objc_msgSend_stret -u_xamarin_simd__GKBox_objc_msgSendSuper_stret -u_xamarin_simd__IntPtr_objc_msgSend_GKBox_float -u_xamarin_simd__IntPtr_objc_msgSendSuper_GKBox_float -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Vector3 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Vector3 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_GKBox -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_GKBox -u_xamarin_simd__IntPtr_objc_msgSend_GKBox -u_xamarin_simd__IntPtr_objc_msgSendSuper_GKBox -u_xamarin_simd__Vector2_objc_msgSend_nuint -u_xamarin_simd__Vector2_objc_msgSendSuper_nuint -u_xamarin_simd__Vector2_objc_msgSend_stret_nuint -u_xamarin_simd__Vector2_objc_msgSendSuper_stret_nuint -u_xamarin_simd__Vector3_objc_msgSend_nuint -u_xamarin_simd__Vector3_objc_msgSendSuper_nuint -u_xamarin_simd__Vector3_objc_msgSend_stret_nuint -u_xamarin_simd__Vector3_objc_msgSendSuper_stret_nuint -u_xamarin_simd__IntPtr_objc_msgSend_GKQuad_float -u_xamarin_simd__IntPtr_objc_msgSendSuper_GKQuad_float -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Vector2_exception -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Vector2_exception -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_GKQuad -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_GKQuad -u_xamarin_simd__IntPtr_objc_msgSend_GKQuad -u_xamarin_simd__IntPtr_objc_msgSendSuper_GKQuad -u_xamarin_simd__IntPtr_objc_msgSend_Vector2_Vector2_float_exception -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2_Vector2_float_exception -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Vector2_Vector2_exception -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Vector2_Vector2_exception -u_xamarin_simd__IntPtr_objc_msgSend_Vector2_Vector2_exception -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2_Vector2_exception -u_xamarin_simd__GKQuad_objc_msgSend -u_xamarin_simd__GKQuad_objc_msgSendSuper -u_xamarin_simd__GKQuad_objc_msgSend_stret -u_xamarin_simd__GKQuad_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_IntPtr_Vector2_Vector2_nint -u_xamarin_simd__void_objc_msgSendSuper_IntPtr_Vector2_Vector2_nint -u_xamarin_simd__void_objc_msgSend_IntPtr_Vector2_Vector2 -u_xamarin_simd__void_objc_msgSendSuper_IntPtr_Vector2_Vector2 -u_xamarin_simd__MPSAxisAlignedBoundingBox_objc_msgSend -u_xamarin_simd__MPSAxisAlignedBoundingBox_objc_msgSendSuper -u_xamarin_simd__MPSAxisAlignedBoundingBox_objc_msgSend_stret -u_xamarin_simd__MPSAxisAlignedBoundingBox_objc_msgSendSuper_stret -u_xamarin_simd__MPSImageHistogramInfo_objc_msgSend -u_xamarin_simd__MPSImageHistogramInfo_objc_msgSendSuper -u_xamarin_simd__MPSImageHistogramInfo_objc_msgSend_stret -u_xamarin_simd__MPSImageHistogramInfo_objc_msgSendSuper_stret -u_xamarin_simd__Vector4_objc_msgSend -u_xamarin_simd__Vector4_objc_msgSendSuper -u_xamarin_simd__Vector4_objc_msgSend_stret -u_xamarin_simd__Vector4_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_Vector4 -u_xamarin_simd__void_objc_msgSendSuper_Vector4 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_ref_MPSImageHistogramInfo -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_ref_MPSImageHistogramInfo -u_xamarin_simd__void_objc_msgSend_NMatrix4_Double -u_xamarin_simd__void_objc_msgSendSuper_NMatrix4_Double -u_xamarin_simd__void_objc_msgSend_NMatrix4d_Double -u_xamarin_simd__void_objc_msgSendSuper_NMatrix4d_Double -u_xamarin_simd__NMatrix4_objc_msgSend_Double -u_xamarin_simd__NMatrix4_objc_msgSendSuper_Double -u_xamarin_simd__NMatrix4_objc_msgSend_stret_Double -u_xamarin_simd__NMatrix4_objc_msgSendSuper_stret_Double -u_xamarin_simd__NMatrix4d_objc_msgSend_Double -u_xamarin_simd__NMatrix4d_objc_msgSendSuper_Double -u_xamarin_simd__NMatrix4d_objc_msgSend_stret_Double -u_xamarin_simd__NMatrix4d_objc_msgSendSuper_stret_Double -u_xamarin_simd__void_objc_msgSend_Quaternion_Double -u_xamarin_simd__void_objc_msgSendSuper_Quaternion_Double -u_xamarin_simd__void_objc_msgSend_Quaterniond_Double -u_xamarin_simd__void_objc_msgSendSuper_Quaterniond_Double -u_xamarin_simd__Quaternion_objc_msgSend_Double -u_xamarin_simd__Quaternion_objc_msgSendSuper_Double -u_xamarin_simd__Quaternion_objc_msgSend_stret_Double -u_xamarin_simd__Quaternion_objc_msgSendSuper_stret_Double -u_xamarin_simd__Quaterniond_objc_msgSend_Double -u_xamarin_simd__Quaterniond_objc_msgSendSuper_Double -u_xamarin_simd__Quaterniond_objc_msgSend_stret_Double -u_xamarin_simd__Quaterniond_objc_msgSendSuper_stret_Double -u_xamarin_simd__void_objc_msgSend_Vector2_Double -u_xamarin_simd__void_objc_msgSendSuper_Vector2_Double -u_xamarin_simd__void_objc_msgSend_Vector2d_Double -u_xamarin_simd__void_objc_msgSendSuper_Vector2d_Double -u_xamarin_simd__Vector2_objc_msgSend_Double -u_xamarin_simd__Vector2_objc_msgSendSuper_Double -u_xamarin_simd__Vector2_objc_msgSend_stret_Double -u_xamarin_simd__Vector2_objc_msgSendSuper_stret_Double -u_xamarin_simd__Vector2d_objc_msgSend_Double -u_xamarin_simd__Vector2d_objc_msgSendSuper_Double -u_xamarin_simd__Vector2d_objc_msgSend_stret_Double -u_xamarin_simd__Vector2d_objc_msgSendSuper_stret_Double -u_xamarin_simd__void_objc_msgSend_NVector3_Double -u_xamarin_simd__void_objc_msgSendSuper_NVector3_Double -u_xamarin_simd__void_objc_msgSend_NVector3d_Double -u_xamarin_simd__void_objc_msgSendSuper_NVector3d_Double -u_xamarin_simd__NVector3_objc_msgSend_Double -u_xamarin_simd__NVector3_objc_msgSendSuper_Double -u_xamarin_simd__NVector3_objc_msgSend_stret_Double -u_xamarin_simd__NVector3_objc_msgSendSuper_stret_Double -u_xamarin_simd__NVector3d_objc_msgSend_Double -u_xamarin_simd__NVector3d_objc_msgSendSuper_Double -u_xamarin_simd__NVector3d_objc_msgSend_stret_Double -u_xamarin_simd__NVector3d_objc_msgSendSuper_stret_Double -u_xamarin_simd__void_objc_msgSend_Vector4_Double -u_xamarin_simd__void_objc_msgSendSuper_Vector4_Double -u_xamarin_simd__void_objc_msgSend_Vector4d_Double -u_xamarin_simd__void_objc_msgSendSuper_Vector4d_Double -u_xamarin_simd__Vector4_objc_msgSend_Double -u_xamarin_simd__Vector4_objc_msgSendSuper_Double -u_xamarin_simd__Vector4_objc_msgSend_stret_Double -u_xamarin_simd__Vector4_objc_msgSendSuper_stret_Double -u_xamarin_simd__Vector4d_objc_msgSend_Double -u_xamarin_simd__Vector4d_objc_msgSendSuper_Double -u_xamarin_simd__Vector4d_objc_msgSend_stret_Double -u_xamarin_simd__Vector4d_objc_msgSendSuper_stret_Double -u_xamarin_simd__NMatrix4d_objc_msgSend -u_xamarin_simd__NMatrix4d_objc_msgSendSuper -u_xamarin_simd__NMatrix4d_objc_msgSend_stret -u_xamarin_simd__NMatrix4d_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_NMatrix4d -u_xamarin_simd__void_objc_msgSendSuper_NMatrix4d -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSend -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSendSuper -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSend_stret -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_NVector3 -u_xamarin_simd__void_objc_msgSendSuper_NVector3 -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSend_Double -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSendSuper_Double -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSend_stret_Double -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSendSuper_stret_Double -u_xamarin_simd__Matrix4_objc_msgSend -u_xamarin_simd__Matrix4_objc_msgSendSuper -u_xamarin_simd__Matrix4_objc_msgSend_stret -u_xamarin_simd__Matrix4_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_MDLAxisAlignedBoundingBox_bool -u_xamarin_simd__void_objc_msgSendSuper_MDLAxisAlignedBoundingBox_bool -u_xamarin_simd__void_objc_msgSend_Vector3_Vector3 -u_xamarin_simd__void_objc_msgSendSuper_Vector3_Vector3 -u_xamarin_simd__Vector3_objc_msgSend_Vector2i_Vector2i -u_xamarin_simd__Vector3_objc_msgSendSuper_Vector2i_Vector2i -u_xamarin_simd__Vector3_objc_msgSend_stret_Vector2i_Vector2i -u_xamarin_simd__Vector3_objc_msgSendSuper_stret_Vector2i_Vector2i -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_bool_IntPtr_Vector2i_nint_nuint_nint_bool -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_bool_IntPtr_Vector2i_nint_nuint_nint_bool -u_xamarin_simd__IntPtr_objc_msgSend_float_IntPtr_Vector2i_int_nint_IntPtr_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_float_IntPtr_Vector2i_int_nint_IntPtr_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_float_float_IntPtr_Vector2i -u_xamarin_simd__IntPtr_objc_msgSendSuper_float_float_IntPtr_Vector2i -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr_Vector2i -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_IntPtr_IntPtr_Vector2i -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_IntPtr -u_xamarin_simd__void_objc_msgSend_Matrix4 -u_xamarin_simd__void_objc_msgSendSuper_Matrix4 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_nuint_Vector2 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_nuint_Vector2 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_nuint_Vector3 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_nuint_Vector3 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_nuint_Vector4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_nuint_Vector4 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_nuint_Matrix4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_nuint_Matrix4 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_nuint_NMatrix4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_nuint_NMatrix4 -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_Vector3i_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_Vector3i_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_Vector2i_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_Vector2i_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_Vector2i_bool_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_Vector2i_bool_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_Vector2i_bool_bool_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_Vector2i_bool_bool_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_Vector2i_int_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_Vector2i_int_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_Vector2i_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_Vector2i_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_bool_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_int_UInt32_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_int_UInt32_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_Vector3i_nint_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_Vector3i_nint_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector2_Vector2i_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2_Vector2i_nint_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_Vector3_nuint_nuint_nint_bool_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector3_nuint_nuint_nint_bool_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_float_Vector2_nuint_nuint_nint_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_float_Vector2_nuint_nuint_nint_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_float_Vector2_nuint_nuint_nuint_nint_bool_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_float_Vector2_nuint_nuint_nuint_nint_bool_IntPtr -u_xamarin_simd__bool_objc_msgSend_Vector2i_nint_float_IntPtr_IntPtr_IntPtr -u_xamarin_simd__bool_objc_msgSendSuper_Vector2i_nint_float_IntPtr_IntPtr_IntPtr -u_xamarin_simd__bool_objc_msgSend_Vector2i_IntPtr_IntPtr_IntPtr_IntPtr -u_xamarin_simd__bool_objc_msgSendSuper_Vector2i_IntPtr_IntPtr_IntPtr_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_float_IntPtr_Vector2i_nint -u_xamarin_simd__IntPtr_objc_msgSendSuper_float_IntPtr_Vector2i_nint -u_xamarin_simd__IntPtr_objc_msgSend_float_IntPtr_Vector2i_int_nint_bool -u_xamarin_simd__IntPtr_objc_msgSendSuper_float_IntPtr_Vector2i_int_nint_bool -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_nint_Vector2i_float_float_float_float -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_nint_Vector2i_float_float_float_float -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_nint_Vector2i_float_float_float_float_float -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_nint_Vector2i_float_float_float_float_float -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_IntPtr_Vector2i -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_IntPtr_Vector2i -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_IntPtr_Vector2i_float -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_IntPtr_Vector2i_float -u_xamarin_simd__IntPtr_objc_msgSend_Matrix4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_Matrix4 -u_xamarin_simd__IntPtr_objc_msgSend_Matrix4_bool -u_xamarin_simd__IntPtr_objc_msgSendSuper_Matrix4_bool -u_xamarin_simd__IntPtr_objc_msgSend_NMatrix4_bool -u_xamarin_simd__IntPtr_objc_msgSendSuper_NMatrix4_bool -u_xamarin_simd__Vector3_objc_msgSend_Double -u_xamarin_simd__Vector3_objc_msgSendSuper_Double -u_xamarin_simd__Vector3_objc_msgSend_stret_Double -u_xamarin_simd__Vector3_objc_msgSendSuper_stret_Double -u_xamarin_simd__Matrix4_objc_msgSend_Double -u_xamarin_simd__Matrix4_objc_msgSendSuper_Double -u_xamarin_simd__Matrix4_objc_msgSend_stret_Double -u_xamarin_simd__Matrix4_objc_msgSendSuper_stret_Double -u_xamarin_simd__void_objc_msgSend_Vector3_Double -u_xamarin_simd__void_objc_msgSendSuper_Vector3_Double -u_xamarin_simd__void_objc_msgSend_Matrix4_Double -u_xamarin_simd__void_objc_msgSendSuper_Matrix4_Double -u_xamarin_simd__Matrix4_objc_msgSend_IntPtr_Double -u_xamarin_simd__Matrix4_objc_msgSendSuper_IntPtr_Double -u_xamarin_simd__Matrix4_objc_msgSend_stret_IntPtr_Double -u_xamarin_simd__Matrix4_objc_msgSendSuper_stret_IntPtr_Double -u_xamarin_simd__MDLVoxelIndexExtent2_objc_msgSend -u_xamarin_simd__MDLVoxelIndexExtent2_objc_msgSendSuper -u_xamarin_simd__MDLVoxelIndexExtent2_objc_msgSend_stret -u_xamarin_simd__MDLVoxelIndexExtent2_objc_msgSendSuper_stret -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_MDLAxisAlignedBoundingBox_float -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_MDLAxisAlignedBoundingBox_float -u_xamarin_simd__bool_objc_msgSend_Vector4i_bool_bool_bool_bool -u_xamarin_simd__bool_objc_msgSendSuper_Vector4i_bool_bool_bool_bool -u_xamarin_simd__void_objc_msgSend_Vector4i -u_xamarin_simd__void_objc_msgSendSuper_Vector4i -u_xamarin_simd__IntPtr_objc_msgSend_MDLVoxelIndexExtent2 -u_xamarin_simd__IntPtr_objc_msgSendSuper_MDLVoxelIndexExtent2 -u_xamarin_simd__Vector4i_objc_msgSend_Vector3 -u_xamarin_simd__Vector4i_objc_msgSendSuper_Vector3 -u_xamarin_simd__Vector4i_objc_msgSend_stret_Vector3 -u_xamarin_simd__Vector4i_objc_msgSendSuper_stret_Vector3 -u_xamarin_simd__Vector3_objc_msgSend_Vector4i -u_xamarin_simd__Vector3_objc_msgSendSuper_Vector4i -u_xamarin_simd__Vector3_objc_msgSend_stret_Vector4i -u_xamarin_simd__Vector3_objc_msgSendSuper_stret_Vector4i -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSend_Vector4i -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSendSuper_Vector4i -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSend_stret_Vector4i -u_xamarin_simd__MDLAxisAlignedBoundingBox_objc_msgSendSuper_stret_Vector4i -u_xamarin_simd__Quaternion_objc_msgSend -u_xamarin_simd__Quaternion_objc_msgSendSuper -u_xamarin_simd__Quaternion_objc_msgSend_stret -u_xamarin_simd__Quaternion_objc_msgSendSuper_stret -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Quaternion_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Quaternion_IntPtr -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Quaternion -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Quaternion -u_xamarin_simd__IntPtr_objc_msgSend_Vector2d_IntPtr -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2d_IntPtr -u_xamarin_simd__void_objc_msgSend_Vector2d -u_xamarin_simd__void_objc_msgSendSuper_Vector2d -u_xamarin_simd__IntPtr_objc_msgSend_Vector2d_nint -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector2d_nint -u_xamarin_simd__Vector3_objc_msgSend_Vector3 -u_xamarin_simd__Vector3_objc_msgSendSuper_Vector3 -u_xamarin_simd__Vector3_objc_msgSend_stret_Vector3 -u_xamarin_simd__Vector3_objc_msgSendSuper_stret_Vector3 -u_xamarin_simd__IntPtr_objc_msgSend_Vector4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_Vector4 -u_xamarin_vector_float3__Vector4_objc_msgSend -u_xamarin_vector_float3__Vector4_objc_msgSendSuper -u_xamarin_vector_float3__Vector4_objc_msgSend_stret -u_xamarin_vector_float3__Vector4_objc_msgSendSuper_stret -u_xamarin_vector_float3__void_objc_msgSend_Vector4 -u_xamarin_vector_float3__void_objc_msgSendSuper_Vector4 -u_xamarin_simd__void_objc_msgSend_Quaternion -u_xamarin_simd__void_objc_msgSendSuper_Quaternion -u_xamarin_simd__NMatrix2_objc_msgSend -u_xamarin_simd__NMatrix2_objc_msgSendSuper -u_xamarin_simd__NMatrix2_objc_msgSend_stret -u_xamarin_simd__NMatrix2_objc_msgSendSuper_stret -u_xamarin_simd__void_objc_msgSend_NMatrix2 -u_xamarin_simd__void_objc_msgSendSuper_NMatrix2 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Vector4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Vector4 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Matrix2 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Matrix2 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_NMatrix2 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_NMatrix2 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Matrix3 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Matrix3 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_NMatrix3 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_NMatrix3 -u_xamarin_simd__IntPtr_objc_msgSend_IntPtr_Matrix4 -u_xamarin_simd__IntPtr_objc_msgSendSuper_IntPtr_Matrix4 -u_xamarin_simd__Vector2_objc_msgSend_nint -u_xamarin_simd__Vector2_objc_msgSendSuper_nint -u_xamarin_simd__Vector2_objc_msgSend_stret_nint -u_xamarin_simd__Vector2_objc_msgSendSuper_stret_nint -lz -liconv

There are two different arguments passed to clang: -force_load ../libokapi_sim.a and -force_load /Users/filipnavara/Projects/okapi/example/libokapi_sim.a

The second one comes from this part of code: https://github.com/xamarin/xamarin-macios/blob/8ec686c33382f727d4d0761d57e7fa3bf970e818/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/LinkNativeCodeTaskBase.cs#L128-L133 Notable the path is run through Path.GetFullPath.

The first one comes from here: https://github.com/xamarin/xamarin-macios/blob/8ec686c33382f727d4d0761d57e7fa3bf970e818/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/LinkNativeCodeTaskBase.cs#L74 which in turns call this code: https://github.com/xamarin/xamarin-macios/blob/8ec686c33382f727d4d0761d57e7fa3bf970e818/msbuild/Xamarin.MacDev.Tasks.Core/LinkerOptions.cs#L42-L46 and the path is not normalized there.

cc @rolfbjarne, can we move this to xamarin-macios issues?

rolfbjarne commented 2 years ago

From @filipnavara on Sun, 05 Dec 2021 03:02:08 GMT

As a workaround for now you can modify the NativeReference like this:

  <ItemGroup Condition="$(RuntimeIdentifier) == 'iossimulator-x64'">
    <NativeReference Include="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\..\libokapi_sim.a'))">
      <Kind>Static</Kind>
      <ForceLoad>True</ForceLoad>
    </NativeReference>
  </ItemGroup>

That will ensure the compiler gets both paths in the same form and deduplicates them.

rolfbjarne commented 2 years ago

From @tmarkovski on Sun, 05 Dec 2021 13:55:34 GMT

Thanks @filipnavara - that fixed everything! I suppose it's a good practice to use fully resolved paths anyway; this workaround is good enough for us to use in the corresponding .targets files for now.

rolfbjarne commented 2 years ago

From @msftbot[bot] on Mon, 06 Dec 2021 15:53:50 GMT

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger See info in area-owners.md if you want to be subscribed.

Issue Details
### Description I'm trying to run a basic `dotnet new ios` app with a native library linked. The build fails at target `_LinkNativeExecutable` with the error ``` ld: 17954 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` The same library works just fine with Xamarin.iOS target using stable VS for Mac. The same library, compiled for MacCatalyst target works well with net6.0-maccatalyst, identical code as ios. My test projects are in this repo, which also includes the static libraries. https://github.com/trinsic-id/okapi/tree/test-ios/example Running `dotnet run` in the `IosApp` should attempt to run the app for simulator and produce the above error. Running the other two projects (`MacCatalystApp` and `XamarinIosApp`) succeeds - the native library is linked correctly and invoked on app start. The libraries only support `x64` architectures, as I'm running intel mac. Check with `lipo -info .a` ### Reproduction Steps Clone this repo at the specified branch https://github.com/trinsic-id/okapi/tree/test-ios/example Run `dotnet run` from the `IosApp` folder ### Expected behavior App should be run and static library linked correctly ### Actual behavior Linker error ``` ld: 17954 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` ### Regression? Yes. The same library works well with Xamarin.IOS target. See project under `XamarionIosApp` in the linked repo. ### Known Workarounds _No response_ ### Configuration _No response_ ### Other information _No response_
Author: tmarkovski
Assignees: -
Labels: `area-Build-mono`, `os-ios`
Milestone: -
rolfbjarne commented 2 years ago

From @steveisok on Mon, 06 Dec 2021 16:08:44 GMT

As @filipnavara mentioned, this does seem like a xamarin-macios issue. @rolfbjarne @dalexsoto can this issue be moved over?