You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将原生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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:41:44