将原生iOS静态库接入MAUI项目时遇链接错误求助
MAUI iOS应用链接Xamarin.iOS静态库类库时出现符号未找到错误
背景
使用MAUI开发仅面向iOS的应用,需集成一个基于Xamarin.iOS编写、包含静态原生库文件的类库。因无法直接复用原Xamarin项目,新建MAUI类库项目迁移代码后,通过以下配置添加原生库:
<ItemGroup> <ObjcBindingNativeLibrary Include="libAreteUart\a" /> </ItemGroup>
编译错误
将该类库添加至MAUI应用项目后编译,触发链接错误:
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/16.2.1007/targets/Xamarin.Shared.Sdk.targets(3,3): Error: clang++ exited with code 1: Undefined symbols for architecture arm64: "_OBJC_CLASS_$_ComboBarcodeApi", referenced from: objc-class-ref in registrar.o "_OBJC_CLASS_$_ComboNFCApi", referenced from: objc-class-ref in registrar.o "_OBJC_CLASS_$_ComboRFIDApi", referenced from: objc-class-ref in registrar.o "_OBJC_CLASS_$_CommonDevice", referenced from: objc-class-ref in registrar.o "_OBJC_CLASS_$_CommonReaderInfo", referenced from: objc-class-ref in registrar.o "_OBJC_CLASS_$_RcpApi", referenced from: objc-class-ref in registrar.o "_OBJC_CLASS_$_SDeviceApi", referenced from: objc-class-ref in registrar.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) (TestMauiApp)
排查与尝试
推测问题与Register属性相关,示例类代码如下:
// Token: 0x02000003 RID: 3 [Register("ComboBarcodeApi", true)] public class ComboBarcodeApi : SDeviceApi { // Token: 0x17000001 RID: 1 // (get) Token: 0x06000059 RID: 89 RVA: 0x0000206E File Offset: 0x0000026E public override NativeHandle ClassHandle { get { return ComboBarcodeApi.class_ptr; } } // Token: 0x0600005A RID: 90 RVA: 0x00002078 File Offset: 0x00000278 [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Advanced)] [Export("init")] public ComboBarcodeApi() : base(NSObjectFlag.Empty) { base.IsDirectBinding = (base.GetType().Assembly == Messaging.this_assembly); if (base.IsDirectBinding) { base.InitializeHandle(Messaging.IntPtr_objc_msgSend(base.Handle, Selector.GetHandle("init")), "init"); return; } base.InitializeHandle(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, Selector.GetHandle("init")), "init"); } ..... }
已尝试调整链接选项:不链接、仅链接SDK、链接全部,但错误未解决。
寻求解决办法
内容的提问来源于stack exchange,提问作者boss
相关产品推荐
相关产品推荐

