我用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属性有一个问题。
PS:通过我尝试的方式,不链接,只有SDK和链接所有选项,但得到了同样的错误
// 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");
}
.....
}
我在这里发现了一个类似的问题,但没有答案或解决办法
https://github.com/xamarin/xamarin-macios/issues/17196
1条答案
按热度按时间xcitsw881#
我有一个类似的问题.我昨天刚刚修复了它.也许这可以为你工作.单独去每个文件,你在错误日志中看到.下面,
可悲的是,绑定库不会在每个文件中单独显示错误。这也意味着没有代码自动建议。所以只要按照错误窗口中打印的内容即可。还有一些跟踪和错误部分。祝你好运!